2011-09-21 64 views
6

使用MVC3,C#和Razor查看引擎: 我有一个具有Ajax操作链接的表单。在选项中,我试图指定OnBegin和OnComplete javascript函数调用。在这个问题中,我拿出了功能的肉,并简单地添加警报,以便我可以验证被击中的功能。我真正想用这些函数做的是在ajax调用期间使用$ .blockUI。MVC3 - Ajax actionlink - OnBegin,onComplete

相关的代码如下所示:

@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()" }) 

既不工作。

任何想法?

感谢, 托尼

回答

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中,unobtrusive javascript与jQuery一起使用,所以如果您没有包含正确的脚本,HTML5 data- *属性没有解释html助手,并且没有发送AJAX请求。

+0

谢谢。你的回答让我仔细检查脚本参考,并发现它是错误的。一旦纠正,一切正常。再次感谢! –

3

您可以尝试在Ajax.ActionLink方法调用之前放置<script>联盟。 使用此语法的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>