我需要在MVC 3编辑页面中进行一些模型级验证。 (具体来说,我需要确认填写了字段A或字段B,但不是两者都填写,而不是两者都没有。)
我想执行客户端验证以及服务器端验证,这意味着使用远程验证或实现重复的验证代码。我也没关系。
我已经阅读了许多关于滚动您自己的服务器端模型级验证的帖子,但没有一篇文章也涉及实现客户端验证。 (我不知道 - 我确信有人可以告诉我 - 模型级客户端验证是否易于使用jQuery验证进行设置。)
我还读到了从头开始实现自己的远程验证,我可能不得不这样做,因为Remote属性只是属性级别。
我读过this question,这与我的相同,但唯一真正意义上的链接似乎并没有说明回答者所说的内容。
所以,我的问题是:是否有一种简单,相对低效的方法来实现服务器+客户端模型级验证,有或没有远程组件?是否有一个很好的博客文章或网页解释这个?
答案 0 :(得分:1)
我认为Data Annotation Extention by Scott Kirkland完全符合您的要求。 Here是他写的关于他的扩展的博客文章。
核心库提供了可以在任何.NET 4.0项目中使用的服务器端验证属性(没有MVC依赖性)。还有一个易于插拔的客户端验证库,可以使用不显眼的jquery验证在ASP.NET MVC 3项目中使用(只需要包含MVC3的javascript文件)。
答案 1 :(得分:0)
如果我说得对,mvc 3确实包含了jquery客户端验证。 首先,对于模型级服务器端验证,您可以使用自己的验证规则覆盖默认的isValid函数,类似这样(涉及多字段):
public sealed class PropertyAAttribute : ValidationAttribute
{
public string propertyBAttribute { get; set; }
public override bool IsValid(object value)
{
// Your validation rule here
}
}
[PropertyA(propertyBAttribute = "PropertyB")]
public object PropertyA {get;set;}
public object PropertyB {get;set;}
然后,为了处理客户端,您可以简单地使用包含的jquery验证函数:
var frm = $('#formData');
frm.validate();
与此类似,您将在客户端根据您在模型中定义的规则获得错误消息。 希望这是你所需要的:))
答案 2 :(得分:0)