繁体   English   中英

MVC3 - Ajax actionlink - OnBegin,onComplete

[英]MVC3 - Ajax actionlink - OnBegin, onComplete

使用MVC3,C#和Razor View Engine:我有一个具有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()" })

都没有工作。

有任何想法吗?

谢谢,托尼

确保您已将以下脚本包含在您的页面中:

<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请求。

您可以尝试在Ajax.ActionLink方法调用之前放置<script>块。 将此语法用于ajax链接:

@Ajax.ActionLink("my test link", "myAction", "myController", new AjaxOptions { OnBegin = "ajaxStart", OnComplete = "ajaxStop" })

并记得在您的视图或jquery.unobtrusive-ajax.min.js中导入jquery.unobtrusive-ajax.min.js _Layout.cshtml

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM