【问题标题】:MVC not validate empty stringMVC 不验证空字符串
【发布时间】:2020-05-12 22:56:14
【问题描述】:

我有一个 razor 文件,我在其中定义了带有文本框的 html 表单:

    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
        <legend>Product</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
        </fieldset>
     }

问题是,我希望这个字段(model.name)不能为空,但是剃刀验证允许字符串为空,当我将空字符串添加到模型时它会给出错误。 有什么建议可以简单地验证这个字符串不再为空吗?

【问题讨论】:

    标签: c# asp.net-mvc razor


    【解决方案1】:

    你可能需要设置 DataAnnotation 属性

    [必需(AllowEmptyStrings = false)]

    在您要应用验证的属性顶部。
    看这里这个问题
    RequiredAttribute with AllowEmptyString=true in ASP.NET MVC 3 unobtrusive validation

    类似的问题,或多或少在这里。
    How to convert TextBoxes with null values to empty strings

    希望你能解决你的问题

    【讨论】:

      【解决方案2】:

      你的视图模型是什么样的?

      您可以在视图模型中将DataAnnotation 属性添加到Name 属性:

      public class MyViewModel
      {
          [Required(ErrorMessage="This field can not be empty.")]
          public string Name { get; set; }
      }
      

      然后,在您的控制器中,您可以检查发布的模型是否有效。

      public ActionResult MyAction(ViewModel model)
      {
          if (ModelState.IsValid)
          {
              //ok
          }
          else
          {
              //not ok
          }
      }
      

      【讨论】:

        【解决方案3】:

        这对我有用:
        使用以下行不接受空字符串

        [Required (AllowEmptyStrings = false)]
        

        这个不允许空格

        [RegularExpression (@".*\S+.*", ErrorMessage = "No white space allowed")]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-03
          • 1970-01-01
          • 2011-03-11
          • 1970-01-01
          • 2019-07-16
          • 2016-09-04
          • 2021-05-20
          • 1970-01-01
          相关资源
          最近更新 更多