使用MVC3,C#和Razor View引擎: 我有一个具有Ajax Action链接的表单。在选项中我试图指定OnBegin和OnComplete javascript函数调用。在这个问题中,我拿出了函数的内容并简单地添加了警报,以便我可以验证被击中的函数。我真正想要做的就是在ajax调用期间使用$ .blockUI。
相关代码如下所示:
@Ajax.ActionLink("my test link", "myAction", new { Controller = "myController" }, new AjaxOptions { OnBegin = "ajaxStart", OnComplete = "ajaxStop" })
<script type="text/javascript">
function ajaxStart() {
alert("start");
}
function ajaxStop() {
alert("stop");
}
</script>
由于某种原因,这两个函数永远不会被指定调用。我用括号和没有括号试过它,例如:
@Ajax.ActionLink("my test link", "myAction", new { Controller = "myController" }, new AjaxOptions { OnBegin = "ajaxStart()", OnComplete = "ajaxStop()" })
都没有工作。
有什么想法吗?
谢谢, 贝
答案 0 :(得分:13)
确保您已将以下脚本包含在您的页面中:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
并且您已在web.config中启用了不显眼的ajax:
<appSettings>
...
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
在ASP.NET MVC 3中,不引人注目的javascript与jQuery一起使用,因此如果不包含正确的脚本,则不会解释由html帮助程序发出的HTML5 data- *属性,并且不会发送任何AJAX请求
答案 1 :(得分:3)
您可以尝试在<script>
方法调用之前放置Ajax.ActionLink
块。
将此语法用于ajax链接:
@Ajax.ActionLink("my test link", "myAction", "myController", new AjaxOptions { OnBegin = "ajaxStart", OnComplete = "ajaxStop" })
并记得在您的视图或jquery.unobtrusive-ajax.min.js
_Layout.cshtml
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>