为什么UnobtrusiveJavaScriptEnabled = true禁用我的ajax工作?
我正在做一个样本使用MVC3剃刀,并写道:
<p> Show me the time in: @Ajax.ActionLink("UTC","GetTime",new { zone = "utc" },new AjaxOptions { UpdateTargetId = "myResults" }) @Ajax.ActionLink("BST",new { zone = "bst" },new AjaxOptions { UpdateTargetId = "myResults" }) @Ajax.ActionLink("MDT",new { zone = "mdt" },new AjaxOptions { UpdateTargetId = "myResults" }) </p> <div id="myResults" style="border: 2px dotted red; padding: .5em;"> Results will appear here </div> <p> This page was generated at @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 我的问题是:如何使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验证插件。 unobtrusive javascript是不同的。它是基于jquery。当您使用Ajax。* HTML助手(例如Ajax.ActionLink)之一时,在ASP.NET MVC 3中,这些帮助程序还会在相应的锚点上发出HTML5 data- *属性。这些属性然后由Microsoft jquery.unobtrusive-ajax.js脚本解释,您需要包括在您的页面和AJAXify这些链接。所以,例如当你写: @Ajax.ActionLink("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文件,您可以订阅此链接的点击事件,发送一个AJAX请求到包含在href属性中的url,然后基于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 *脚本不再使用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |