我有以下标记:
<ul class="nav nav-tabs">
<li>@Ajax.ActionLink("Home", "Index", "Home", new AjaxOptions { UpdateTargetId = "updaterDiv", OnSuccess = "function() {alert('onsuccess fired'); }"}) </li>
...
<div id="updaterDiv" style=" height: 200px; width: 200px;">
</div>
HomeController中的Index动作
public ActionResult Index()
{
if (Request.IsAjaxRequest())
{
return PartialView("_RefreshedHandler");
}
return View();
}
单击链接时,AjaxOptions中的OnSuccess事件不会被触发。我究竟做错了什么? 我想要实现的目的是避免在单击链接时对整个页面进行回发和更新,而只是更新定义的部分
答案 0 :(得分:2)
我的问题的答案和解决方案在这里找到:MVC5, AjaxHelper, and the Correct Scripts & Load Order,感谢Jasen指向此链接。
我已经安装了nuget压缩管理器:> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.1.2
,然后添加了:
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
到我的项目,然后它工作。运行包管理器后,jquery.unobstrusive-ajax.js
和jquery.unobstrusive-ajax.min.js
自动添加到项目中(在Scripts文件夹下)
答案 1 :(得分:0)
需要将MicrosoftAjax.js和MicrosoftMvcAjax.js添加到您的视图中。 两者都可以在Nuget Package Manager中找到
Ajax.ActionLinks不再依赖于jquery.unobstrusive-ajax.js