为什么UnobtrusiveJavaScriptEnabled = true禁用我的ajax工作?

前端之家收集整理的这篇文章主要介绍了为什么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"/>

那我在这篇文章中阅读:@L_502_0@
但现在我所有的客户端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验证插件

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 *脚本不再使用。

原文链接:https://www.f2er.com/ajax/160493.html

猜你在找的Ajax相关文章