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

Asp.net 我可以通过从web.config中删除条目来关闭所有MVC客户端验证吗,asp.net,asp.net-mvc,asp.net-mvc-3,validation,asp.net-mvc-4,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还是只删除两个条目就可以了?如果不需要,请将其设置为false。这样,您甚至不必猜测

我的
web.config中有以下设置:

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

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


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

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


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

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

<add key="ClientValidationEnabled" value="false"/>
确定ASP.NET是将JQuery用于客户端异步任务,还是原始JavaScript

如果
UnobtrusiveJavaScriptEnabled=false
,客户端验证仍然有效,但将在JQuery上使用原始JavaScript


在JavaScript上使用JQuery的意义是什么?

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

使用原始JavaScript的缺点是什么?

  • 如果没有JQuery(不引人注目的JavaScriptEnabled),您的Ajax助手将无法工作

  • 原始的JavaScript凌乱不堪,用大量东西填充标记。JQuery创建更轻巧、更清晰的标记。(“更轻的ajax属性”的优点)

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


总之:

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

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

但我建议您将
ClientValidationEnabled
设置为
true
。如果不使用验证注释装饰模型,框架将不会呈现验证属性。最好让您的选项保持打开状态,并为每个视图决定在哪里使用客户端验证

我建议不要禁用不引人注目的JavaScriptEnabled。ASP.NET MVC框架使用了太多微妙的方式JQuery。这不会禁用客户端验证


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

如果未引用jquery.validate.unobtrusive.js或将其从bundle中删除,则验证将被禁用。但是,根据web.config参数,
@Html
帮助程序生成或不生成此脚本使用的Html属性。因此,我建议删除脚本并将
ClientValidationEnabled
false设置为false。

如果未使用
@Ajax
帮助程序,则
unobstruiveJavaScriptEnabled
值不会产生差异。

非结构化设置正常

您需要将
ClientValidationEnabled
设置为
false

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


希望这有帮助。

是否可能重复?一切照旧。如果不想使用客户端验证,就不要使用任何模型注释。但不要为了这种影响而删除和调整内容。我检查了链接,它说:“我建议保持低调的JavaScriptEnabled=true,因为它添加了更轻的ajax属性。”我现在更困惑了。还有,如果它们不是真的,我不需要它们,为什么我要把它们设置为真呢?是的。这就是为什么您应该将这两个设置保留为true,并对要验证的字段使用验证。剩下的困惑在哪里?Dave-只是简单的澄清一下,不引人注目的JavaScriptEnabled设置实际上控制客户端验证的呈现方式。设置为true时,HTML5样式属性将在每个表单输入上呈现。将其设置为false后,将在表单末尾呈现老式的JSON文本块。虽然true设置使用jQuery.validate为true,但是false设置将返回到老式的Microsoft.Ajax.validate方法,而不是普通的javascript。只要2美分@汤米,谢谢你的贡献。为了澄清,我认为Microsoft.Ajax.Validate库是用原始Javascript编写的。这不对吗?我想你可能是对的。我最初阅读你的答案的方式让人觉得这是他们自己的问题,没有任何框架支持:)无论如何,我在研究这个问题时遇到了这个链接,尽管它提供了一些关于问题属性的好信息@汤米,我试着非常具体地回答OP的问题;回答为什么
UnobtrusiveJavaScriptEnabled
标志应该设置为
true
,以及这是如何影响打火机ajax属性的。我不知道为什么我的答案不那么正确。我知道这是老生常谈了。但是,将此设置为true和“只是不使用验证属性”意味着您也没有对模型服务器端进行验证。这是正确的答案。如果不打算使用任何客户端验证,请将其关闭(将EnableCLientSideValidation设置为false。如果为false,则无论第二项设置为true还是false,都不会使用)。这将阻止框架呈现任何HTML5属性或大ugl
<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="false"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
  </appSettings>
</configuration>