【问题标题】:Do I need to use Html.TextBox to use DataAnnotations validation?我需要使用 Html.TextBox 来使用 DataAnnotations 验证吗?
【发布时间】:2014-10-21 09:42:02
【问题描述】:

我正在看这个例子: http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validation-with-the-data-annotation-validators-cs

该示例使用以下语法:

<label for="Name">Name:</label>
<%= Html.TextBox("Name") %>
<%= Html.ValidationMessage("Name", "*") %>

是否需要使用这些属性进行服务器端验证?

【问题讨论】:

  • 这用于客户端验证。所以:不,不是绝对必要的。
  • 但是要验证 ClientSide 我需要它,对吧?

标签: c# asp.net asp.net-mvc validation


【解决方案1】:

没有。服务器端验证由Modelbinder 完成,因此假设模型绑定器可以找到字段(它们需要具有与输入字段对应的名称),注释将起作用。

【讨论】:

  • 字段名称是否应该与属性名称一样区分大小写?
  • 是的。不确定区分大小写的部分,但我认为这可能无关紧要。
  • 但是如何告诉浏览器显示错误消息和控制器停止验证?
  • 在控制器中,您可以从 ModelState.Values.SelectMany(v => v.Errors) 检索所有错误并通过执行 ModelState.Clear() 清除验证
  • @Revious,不区分大小写,否则必须匹配。最好使用强类型帮助器,以便框架为您正确命名 - Html.TextBoxFor(m =&gt; m.Name)Html.ValidationMessageFor(m =&gt; m.Name)
【解决方案2】:

如果您使用模型,您还可以在模型类本身中为您的属性提供验证。它需要DataAnnotation作为参考

using System.ComponentModel.DataAnnotations;

[Required(ErrorMessage = "Field is Required")]
public string Textbox_NAME { get; set; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2021-10-16
    • 2015-09-27
    • 1970-01-01
    • 2015-12-25
    • 2013-10-29
    • 1970-01-01
    相关资源
    最近更新 更多