4

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

我想执行客户端验证以及服务器端验证,这意味着要么使用远程验证,要么实现重复验证代码。我都可以。

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

我还阅读了有关从头开始实现您自己的远程验证的信息,我可能必须这样做,因为 Remote 属性仅是属性级的。

我读过这个问题,这与我的相同,但唯一真正正确的链接似乎并没有说明回答者所说的内容。

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

4

3 回答 3

1

我认为Scott Kirkland 的 Data Annotation Extension正是您想要的。 是他写的关于他的扩展的博客文章。

核心库提供可在任何 .NET 4.0 项目中使用的服务器端验证属性(无 MVC 依赖项)。还有一个易于插入的客户端验证库,可以在 ASP.NET MVC 3 项目中使用不显眼的 jquery 验证(只需要包含 MVC3 的 javascript 文件)。

于 2011-11-10T20:48:53.497 回答
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();

像这样,您将根据您在模型中定义的规则在客户端收到错误消息。希望这是你需要的:)

于 2011-11-10T23:25:22.747 回答
0

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

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

希望这可以帮助。

于 2011-11-11T00:15:29.290 回答