Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 添加特别的不引人注目的验证_Asp.net Mvc 3_Unobtrusive Validation - Fatal编程技术网

Asp.net mvc 3 添加特别的不引人注目的验证

Asp.net mvc 3 添加特别的不引人注目的验证,asp.net-mvc-3,unobtrusive-validation,Asp.net Mvc 3,Unobtrusive Validation,我有一个MVC3应用程序,使用EF,其中一个表在许多视图模型中结束。它有一个通常不需要的字段。但是,有一种情况(和一种视图)需要它。我希望在需要的地方对该字段的必要性进行客户端和服务器验证 现在,我不想将Required数据注释放在字段上,因为这样它将始终是必需的。即使在未显示字段进行编辑的视图上也是如此,这将导致用户无法发出验证消息 我也没有寻找RequiredIfvalidation属性,因为这不适合设计。该字段仅在一种情况下是必需的,我不希望为了依赖关系而必须从所有视图模型中的多余表中插入

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

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

我也没有寻找
RequiredIf
validation属性,因为这不适合设计。该字段仅在一种情况下是必需的,我不希望为了依赖关系而必须从所有视图模型中的多余表中插入额外的字段

我所希望的是能够在一个视图中为一个字段启用所需的字段验证,这是一种特殊的方式,而不是基于DataAnnotations的方式

我立即想到的方法是在为字段创建标记时指定必要的
data val-*
属性(通过
HtmlAttributes
签名的
HtmlHelper.textbox末尾的
object)。如果我理解正确,这将提示JS进行不引人注目的验证,以按要求处理字段


但这是。。。在我看来,有点太粗俗了。不引人注目的验证支持将侵入更高级别的代码。有没有更优雅的方法?一个jQuery验证函数调用,我可以用它来实现我想要的事情,是吗

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


这就是在视图模型中使用数据模型时遇到的问题。正确的方法是为每个视图创建单独的视图模型。您可以通过共享视图模型和仅为那些不同的视图创建单独的视图模型来实现。无论哪种情况,如果您有一个唯一的视图,它都需要自己的唯一视图模型。

同意重新编码气味,需要服务器端验证。思考其余部分对我的应用程序的影响。不过,非常感谢。