9

我有以下设置web.config:

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

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

我应该将它们设置为false还是只删除两个条目都可以?

4

4 回答 4

11

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

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

于 2013-10-12T20:36:03.150 回答
9

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

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

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

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

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

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


在 JavaScript 上使用 JQuery 有什么意义?

一些环境选择不使用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. 如果您不使用验证注释来装饰您的模型,则框架将不会呈现验证属性。最好让您的选项保持打开状态,并为每个视图/视图模型决定在哪里使用客户端验证。

我建议不要禁用UnobtrusiveJavaScriptEnabledASP.NET MVC Framework使用JQuery的方式太多了。这不会禁用客户端验证。

重要提示:不要删除任何一个条目。如果要禁用一个,只需将其设置为false. 通过删除任一条目,您将任由框架的默认行为(可能会随着时间而改变)摆布。

于 2013-10-12T22:28:55.340 回答
2

不显眼的设置是好的。

您需要设置ClientValidationEnabledfalse.

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

希望这可以帮助。

于 2013-10-16T06:08:27.020 回答
2

如果您不引用jquery.validate.unobtrusive.js或从捆绑包中删除它,则验证将被禁用。但是,根据 web.config 参数,@Html帮助程序生成或不生成此脚本使用的 html 属性。所以我建议删除脚本并设置为ClientValidationEnabledfalse。
如果您不使用@Ajax帮助程序,则该UnobtrusiveJavaScriptEnabled值没有任何区别。

于 2013-10-14T04:52:27.043 回答