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

时间:2013-10-03 15:57:50

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

我的web.config:

中有以下设置
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

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

我应该将这些设置为false还是只删除这两个条目?

4 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:9)

Web.config中有2个不同的设置是耦合的,但不是同义词。

<add key="ClientValidationEnabled" value="false"/>

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

<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

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

如果UnobtrusiveJavaScriptEnabled=false,您的客户端验证仍然有效,但会使用原始 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"/>

但我建议您将ClientValidationEnabled设置为true。如果不使用验证注释装饰模型,框架将不会呈现验证属性。最好打开您的选项并决定每个 查看 / ViewModel 在哪里使用客户端验证。< / p>

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

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

答案 2 :(得分:2)

如果您未引用jquery.validate.unobtrusive.js或从捆绑包中删除它,则将禁用验证。但是,基于web.config参数,@Html帮助程序生成或不生成此脚本使用的html属性。所以我建议删除脚本并设置ClientValidationEnabled false 如果您不使用@Ajax助手,则UnobtrusiveJavaScriptEnabled值不会产生任何差异。

答案 3 :(得分:2)

不引人注目的设置没问题。

您需要将ClientValidationEnabled设置为false

<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="false"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
  </appSettings>
</configuration>

希望这有帮助。