不幸的是,WebForms 模型绑定验证框架还没有 MVC 全面。一方面,数据注释的客户端验证不是内置的。我所知道的显示数据注释错误的唯一方法是通过 ValidationSummary 控件,该控件具有 ShowModelStateErrors 属性(默认为 true)。这是一个超级简单的例子:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:FormView ID="FormView" runat="server" RenderOuterTable="false" ItemType="Person"
DefaultMode="Insert" InsertMethod="FormView_InsertItem">
<InsertItemTemplate>
<asp:ValidationSummary ID="ValSummary" runat="server" ValidationGroup="FormGroup"
HeaderText="The following problems occured when submitting the form:" />
<table>
<tr>
<td>
<asp:Label ID="NameLabel" runat="server" AssociatedControlID="NameField">Name</asp:Label>
</td>
<td>
<asp:TextBox ID="NameField" runat="server" Text='<%# BindItem.Name %>' ValidationGroup="FormGroup" />
</td>
</tr>
</table>
<asp:Button ID="SaveButton" runat="server" CommandName="Insert" Text="Save" ValidationGroup="FormGroup" />
</InsertItemTemplate>
</asp:FormView>
</form>
</body>
</html>
代码背后:
public partial class create_person : System.Web.UI.Page
{
public void FormView_InsertItem()
{
var p = new Person();
TryUpdateModel(p);
if (ModelState.IsValid)
{
Response.Write("Name: " + p.Name + "<hr />");
}
}
}
班级:
using System.ComponentModel.DataAnnotations;
public class Person
{
[Required, StringLength(50)]
public string Name { get; set; }
}
因为数据注释验证没有客户端/javascript 支持,所以生成模型状态错误的唯一方法是在回发之后。如果您需要在控件旁边进行内联验证,您仍然需要使用标准验证控件。
我在用户语音上发布了一个功能请求,要求他们考虑改进数据注释集成:
http ://aspnet.uservoice.com/forums/41202-asp-net-web-forms/suggestions/3534773-include-client-side -validation-when-using-data-ann
如果您喜欢这个想法,请在用户语音上投票。希望这可以帮助。