UnobtrusiveJavaScriptEnabled、ClientValidationEnabled(转载)

UnobtrusiveJavaScriptEnabled:不显眼的JavaScript

ClientValidationEnabled:启动客户端验证

 

转载来源二:http://www.voidcn.com/article/p-tiuqwvhe-buh.html

我很好奇UnobtrusiveJavaScriptEnabled对.NET框架意味着什么.

 

我正在开发一个项目,作为在后端使用.NET的前端开发人员.在与开发人员(也管理服务器)合作时,他提到我们的项目必须将UnobtrusiveJavaScript设置为false.也就是说,项目的web.config应该具有以下内容:

<appSettings>
  ...
  <add key="UnobtrusiveJavaScriptEnabled" value="false" />
</appSettings>

我的第一反应是这是不好的做法,但是当我进一步思考它时,我意识到我并不真正理解为什么.NET甚至会在项目层面开始这样的设置,或者它是否对于我们的特定项目.

 
从 here开始:

 

 

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* 脚本。

 

posted @ 2021-06-29 18:45  hao_1234_1234  阅读(338)  评论(0编辑  收藏  举报