【发布时间】:2013-11-24 08:52:07
【问题描述】:
我是使用数据注释的 asp.net 4.5 webforms 模型绑定的忠实粉丝。
ascx:
<asp:FormView ItemType="Contact" runat="server" DefaultMode="Edit"
SelectMethod="GetContact" UpdateMethod="SaveContact">
<EditItemTemplate>
<asp:ValidationSummary runat="server" ID="valSum" />
Firstname: <asp:TextBox runat="server" ID="txtFirstname" Text='<%#: BindItem.Firstname %>' />
Lastname: <asp:TextBox runat="server" ID="txtLastname" Text='<%#: BindItem.Lastname %>' />
Email: <asp:TextBox runat="server" ID="txtEmail" Text='<%#: BindItem.Email %>' />
<asp:Button ID="Button1" runat="server" Text="Save" CommandName="Update" />
</EditItemTemplate>
</asp:FormView>
.cs:
public void SaveContact(Contact viewModel)
{
if (!Page.ModelState.IsValid)
{
return;
}
}
public Contact GetContact()
{
return new Contact();
}
型号:
public class Contact
{
[Required]
[StringLength(10, ErrorMessage="{1} tis te lang")]
public string Firstname { get; set; }
[Required]
[StringLength(10)]
public string Lastname { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
}
问题:
像 MVC 这样的 web 表单是否支持开箱即用的客户端验证? 或者我们应该依赖第三方库(DAValidation)。是否可以将 Html.EnableClientValidation() 的优点移植到 webforms 中?
问候,
巴特
【问题讨论】:
-
我猜你必须使用不显眼的验证见这里:codeguru.com/csharp/.net/net_asp/…
-
嗨,Sam,目前根本没有客户端验证(不引人注目)。提到的链接在 ascx 中使用 requiredfieldvalidator 的 / 正则表达式验证器。我想避免在 2 个地方指定验证规则(数据注释模型 + ascx)。客户端验证应该建立在模型上指定的注释的权利。巴特
-
很遗憾,数据注释属性的客户端验证不可用(但它可用于带有
DynamicValidator的服务器端)。您可以编写自己的验证器,也可以使用我前段时间编写的验证器 - davalidation.codeplex.com。 -
Guys webforms 有完整的客户端验证,只需要在模型中指定一次,这就是模型绑定和 DataAnnotations 的重点,请在下面查看我的答案
标签: asp.net webforms data-annotations model-binding client-side-validation