ASP.NET MVC 3:模型级客户端或远程验证

时间:2011-11-10 16:27:31

标签: asp.net-mvc-3 jquery-ui remote-validation

我需要在MVC 3编辑页面中进行一些模型级验证。 (具体来说,我需要确认填写了字段A或字段B,但不是两者都填写,而不是两者都没有。)

我想执行客户端验证以及服务器端验证,这意味着使用远程验证或实现重复的验证代码。我也没关系。

我已经阅读了许多关于滚动您自己的服务器端模型级验证的帖子,但没有一篇文章也涉及实现客户端验证。 (我不知道 - 我确信有人可以告诉我 - 模型级客户端验证是否易于使用jQuery验证进行设置。)

我还读到了从头开始实现自己的远程验证,我可能不得不这样做,因为Remote属性只是属性级别。

我读过this question,这与我的相同,但唯一真正意义上的链接似乎并没有说明回答者所说的内容。

所以,我的问题是:是否有一种简单,相对低效的方法来实现服务器+客户端模型级验证,有或没有远程组件?是否有一个很好的博客文章或网页解释这个?

3 个答案:

答案 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)

有一个类似的问题已经解答here可能会有所帮助吗?给出的答案是验证是否输入了至少一个字段,但答案中给出的原则可能就是您要查找的内容,您应该能够更改答案以适合您所需的验证。该解决方案还提供服务器和客户端验证选项,我相信您可以将该解决方案用作模块或属性级验证吗?

此外,还有以下文章here详细说明了如何创建自己的自定义验证,类似于我链接到的答案中提供的验证。

希望这有帮助。