【问题标题】:Accept commas and periods in for input forms Blazor FluentValidation接受输入表单中的逗号和句点 Blazor FluentValidation
【发布时间】:2020-12-23 02:58:54
【问题描述】:

我在 html Blazor 页面上有几个 InputNumber 字段。他们基本上跟踪成千上万的收入。许多用户更愿意在这些表格中输入 10,000 美元而不是 10000 美元,甚至是 10.000 美元。我如何使用 Blazor FluentValidation 语法来允许这样做,当然要确保用户正确格式化他们的输入?

对于上下文,这里是上述表单的当前验证代码:

 public class BusinessDataValidator : AbstractValidator<BusinessData>
    {
        public BusinessDataValidator()
        {

            RuleFor(p => p.BusinessResellingGross).NotEmpty().WithMessage("You must enter a number");

            RuleFor(p => p.PavementTaxGross).NotEmpty().WithMessage("You must enter a number");

            RuleFor(p => p.CustomWorkServicesGross).NotEmpty().WithMessage("You must enter a number");

        }

    }

【问题讨论】:

  • 您是否考虑过为这些数字添加客户端格式,并且仍然只发送原始整数(或小数)值?
  • 不具体,这是最好的方法吗?
  • 处理数值时,您希望尽量减少使用它们所需的工作量。处理单个通用数字,并在客户端上对该数字应用不同的格式,比尝试在服务器端代码中处理这些不同的用例要容易得多。
  • 有道理,你有链接或什么让我开始吗?
  • 输入屏蔽可能是您所追求的。你可以在这个 StackOverflow 问题中看到如何做到这一点:stackoverflow.com/questions/61541342/blazor-input-mask

标签: c# validation blazor


【解决方案1】:

我建议为此创建您自己的控件。 InputNumber的源码可以查看here

Input.. 控件的一个共同特点是 HTML 输入以字符串形式出现,并且必须从字符串输入转换为绑定值类型,然后再转换回字符串值才能显示。见TryParseValueFromStringFormatValueAsString

您可以通过复制此代码并重写这两种方法来创建InputNumber 的副本(例如InputCurrency ?),以便以您喜欢的任何方式解析金额。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多