添加ad-hoc不显眼的验证

时间:2012-02-15 17:36:36

标签: asp.net-mvc-3 unobtrusive-validation

我有一个MVC3应用程序,使用EF,其中一个表格在很多视图模型中结束。它有一个通常不需要的字段。但是,有一种情况(和一种观点)需要它。我希望客户端和服务器验证这个字段的必需性,在需要它的地方。

现在,我不想在字段上放置Required数据注释,因为它始终是必需的。即使在未显示字段以进行编辑的视图中也是如此,这将导致用户无法消失的验证消息。

我也不是在寻找RequiredIf验证属性,因为这不适合设计。该字段仅在一种情况下是必需的,并且我不想在所有视图模型中从多余的表中添加额外的字段,仅仅是为了依赖。

我想要的只是能够在ad-hoc,not-based-on-DataAnnotations方式中为一个视图中的一个字段启用必需的字段验证。

立即向我建议的方式是在为字段创建标记时指定必要的data-val-*属性(通过HtmlAttributes签名末尾的HtmlHelper.TextBoxFor对象) 。如果我理解正确,这应该提示JS不引人注意的验证来根据需要处理该字段。

但这对我来说似乎有点过分了。不显眼的验证支持将侵入更高级别的代码。有没有更优雅的方式来做到这一点?我可以使用jQuery Validation函数调用来实现我想要发生的事情吗?

1 个答案:

答案 0 :(得分:0)

这种数据-val方法不仅具有代码气味,而且还不可靠,因为最终用户可能正在使用不进行不显眼验证的客户端。客户端验证是糖果,这很好。您必须始终进行服务器端验证。

这是将数据模型用于视图模型时遇到的问题。正确的方法是为每个视图创建单独的视图模型。您可以通过共享View Models并仅为那些不同的视图创建单独的视图模型。在任何一种情况下,如果您有一个独特的视图,它需要自己独特的视图模型。