我可以通过删除web.config中的条目来关闭所有MVC客户端验证

9 asp.net validation asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有以下设置 web.config:

<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

我没有使用任何客户端验证.

我应该设置这些false还是可以删除这两个条目?

ps2*_*oat 11

如果您不想要它,请将其设置为false.这样你甚至不必猜测以后默认是什么,项目中的其他人可以立即看到关闭它是你的意图.

同时从bundleconfig中删除客户端验证,以防止用户进行不必要的下载.


Dav*_*ich 9

有两种不同的设置Web.config是耦合的,但不是同义词.

<add key="ClientValidationEnabled" value="false"/>
Run Code Online (Sandbox Code Playgroud)

确定是否启用了客户端验证.如果该值设置为false,则模型注释(required, min, max等)将不会创建客户端属性或行为.

<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
Run Code Online (Sandbox Code Playgroud)

确定ASP.NET是否将JQuery用于客户端异步任务或原始JavaScript.

如果UnobtrusiveJavaScriptEnabled=false,您的客户端验证仍然有效,但将使用Raw JavaScript而不是JQuery.


使用JQuery而不是JavaScript有什么意义?

有些环境选择不使用JQuery.他们有大量定制的UI框架.JQuery可能已经以自定义方式使用.或者可以使用不同的JS库进行所有异步增强

使用原始JavaScript有什么不利之处?

  • 没有JQuery(UnobtrusiveJavaScriptEnabled),您的Ajax助手将无法工作.

  • 原始的JavaScript很乱,用很多东西填满你的标记.JQuery创建更轻松,更清晰的标记.(" 更轻的ajax属性 " 的优点)

  • 您的原始Javascript将不那么健壮,可能效率较低.请记住,ASP.NET JavaScript库在3年内没有发展(早在MVC 3发布之前).


结论:

如果要禁用客户端验证,请设置

<add key="ClientValidationEnabled" value="false"/>
Run Code Online (Sandbox Code Playgroud)

但我建议你离开ClientValidationEnabledtrue.如果不使用验证注释装饰模型,框架将不会呈现验证属性.最好保持选项打开,并决定每个View/ViewModel使用客户端验证的位置.

我建议不要禁用UnobtrusiveJavaScriptEnabled.ASP.NET MVC框架使用JQuery有太多微妙的方法.这不会禁用客户端验证.

重要说明:请勿删除任何条目.如果要禁用一个,只需将其设置为false.通过删除任一条目,您将自己置于框架的默认行为(可能随时间变化)的左右.