UnobtrusiveJavaScriptEnabled、ClientValidationEnabled(转载)
UnobtrusiveJavaScriptEnabled:不显眼的JavaScript
ClientValidationEnabled:启动客户端验证
转载来源二:http://www.voidcn.com/article/p-tiuqwvhe-buh.html
我正在开发一个项目,作为在后端使用.NET的前端开发人员.在与开发人员(也管理服务器)合作时,他提到我们的项目必须将UnobtrusiveJavaScript设置为false.也就是说,项目的web.config应该具有以下内容:
<appSettings>
...
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
</appSettings>
我的第一反应是这是不好的做法,但是当我进一步思考它时,我意识到我并不真正理解为什么.NET甚至会在项目层面开始这样的设置,或者它是否对于我们的特定项目.
The purpose of that setting is explained by Brad Wilson in his post 07001. Putting it short – with this setting turned off client side validation is being performed using Microsoft javascript libraries (the same way it was performed in ASP.NET MVC 1 and 2). Otherwise (with setting turned on) client side validation is performed using JQuery Validate.
翻译:布拉德·威尔逊(Brad Wilson)在其博文07001中解释了这种设置的目的。简而言之,关闭此设置后,客户端验证将使用Microsoft javascript库执行(与在ASP.NET MVC 1和2中执行的方式相同)。否则(在设置打开的情况下)使用JQuery Validate执行客户端验证。
换句话说,您的应用程序可能具有依赖于执行验证的Microsoft JavaScript库的代码.
转载来源一:https://www.it1352.com/49361.html
我正在使用 MVC3 razor 做一个示例,并写道:
<p> 显示时间: @Ajax.ActionLink("UTC", "GetTime", new { zone = "utc" }, new AjaxOptions { UpdateTargetId = "myResults" }) @Ajax.ActionLink("BST", "GetTime", new { zone = "bst" }, new AjaxOptions { UpdateTargetId = "myResults" }) @Ajax.ActionLink("MDT", "GetTime", new { zone = "mdt" }, new AjaxOptions { UpdateTargetId = "myResults" }) </p> <div id="myResults" style="border: 2px 红色虚线; padding: .5em;"> 结果将显示在此处 </div> <p> 此页面是在 @DateTime.UtcNow.ToString("h:MM:ss tt") (UTC) 生成的 </p>
我所有的 ajax 调用都不起作用,直到我在 web.config 中更改了这个键:
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
我在这篇文章中读到的内容:http : //weblogs.asp.net/owscott/archive/2010/11/17/mvc-3-ajax-redirecting-instead-of-updating-div.aspx
但现在我所有的客户端 cide 验证不像以前那样工作。
我的问题是:如何使 ajax 代码同时工作和客户端验证?这个关于“UnobtrusiveJavaScriptEnabled”的属性是什么?是他们之间的切换吗?!我希望能用简单的语言更深入地了解它。
在 ASP.NET MVC 3 中有两件事:客户端验证和不显眼的 javascript,它们由它们在 web.config 中的相应值控制:
<add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" />
客户端验证基于 jquery.validate.js 插件以及来自 Microsoft 的 jquery.validate.unobtrusive.js 脚本。当您将这两个脚本包含在包含 HTML 表单的视图中时,客户端验证将根据您在模型上定义的数据注释规则执行。当您查看视图生成的 HTML 源代码时,您会注意到输入字段具有包含验证规则的 HTML5 data-* 属性。然后,Microsoft 非侵入式验证脚本将读取这些规则并配置 jquery 验证插件。
不显眼的javascript是不同的。它基于jquery。当您在 ASP.NET MVC 3 中使用 Ajax.* HTML 助手之一(例如 Ajax.ActionLink)时,这些助手还会在相应的锚点上发出 HTML5 data-* 属性。这些属性然后由 Microsoft jquery.unobtrusive-ajax.js 脚本解释,您需要将其包含在您的页面中并对这些链接进行 AJAX 化。例如,当你写:
@Ajax.ActionLink("UTC", "GetTime", new { zone = "utc" }, new AjaxOptions { UpdateTargetId = "myResults" })
这将生成以下 HTML:
<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#myResults" href="/Home/GetTime?zone=utc">UTC</a>
正如您现在看到的,有关如何执行 AJAX 请求的所有信息都包含在 DOM 中。因此,您可以有一个单独的 javascript 文件,您可以在其中订阅此链接的点击事件,向包含在 href 属性中的 url 发送 AJAX 请求,然后根据 data-ajax-mode 属性的值替换 html一些带有 id 的容器包含在 data-ajax-update 属性选择器中。而这正是 jquery.unobtrusive-ajax.js 所做的。只是它在一个单独的文件中,并且您的标记和 javascript 是独立的,这在以前的版本中并非如此。
因此,与 ASP.NET MVC 1 和 2 不同,在 ASP.NET MVC 3 中,jQuery 是默认的 javascript 框架,而 HTML 助手基于它。不再使用所有 MicrosoftAjax* 脚本。