【问题标题】:How add custom validation to my razor page?如何向我的剃须刀页面添加自定义验证?
【发布时间】:2012-09-29 16:59:18
【问题描述】:

我的 mvc 4 应用程序中有 razor 页面。现在想象我的页面中有一个简单的文本框,如下所示:

@Html.TextBox("Email")

<input id="Email" name="Email" type="text" />

我怎样才能为这个字段做一些客户端验证,你知道类似 asp.net web forms validation controls 。我想让它成为必需的并为它写一个正则表达式。

【问题讨论】:

标签: asp.net-mvc validation razor client-side


【解决方案1】:

我经常这样做:

  • 在模型 Person.cs 中:

        [StringLength(50, ErrorMessage = "El campo {0} no puede tener mas de 50 caracteres")]
        [Required(ErrorMessage = "El nombre es obligatorio")]
        public string Nombre { get; set; }
    
  • 在页面Create.cshtml中:

        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="Person.Nombre" class="control-label">Nombre / Name:</label>
            <input asp-for="Person.Nombre" class="form-control" />
            <span asp-validation-for="Person.Nombre" class="text-danger"></span>
        </div>
    

【讨论】:

    【解决方案2】:

    您通常使用RequiredAttributeRegexAttribute 来装饰您的模型属性。

    【讨论】:

    • 但是我没有将模型传递到我的剃须刀页面它只是一个简单的登录表单!
    【解决方案3】:

    您可能想查看数据注释。它们为您为每个视图模型中的每个字段定义(不仅)验证提供了非常简单直接的方法。

    请看以下链接:

    How to: Validate Model Data Using DataAnnotations Attributes

    在您的特定情况下,它将是

    [Required]
    [RegularExpression(@"<your RegEx>", ErrorMessage = "<your message, leave out for default>")]
    public string fieldYouValidating { get; set; }
    

    许多人喜欢的其他验证方式是Fluent Validation

    RuleFor(x => x.fieldYouValidating)
            .NotEmpty()
            .WithMessage("This is the message.");
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 2020-09-21
      • 2020-10-21
      • 1970-01-01
      • 2022-10-16
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多