ASP.NET MVC4 Ajax.ActionLink 替换了整个页面

ASP.NET MVC4 Ajax.ActionLink replaces entire page

提问人:Jaroslav Bačkora 提问时间:5/4/2013 更新时间:5/4/2013 访问量:4155

问:

在我看来,我有:

 @section Header {
     @Scripts.Render("~/bundles/jqueryval")
 }

<div>
    <div>@Ajax.ActionLink("Test", "CurrentTime", new AjaxOptions { UpdateTargetId = "some_div", InsertionMode = InsertionMode.InsertAfter })</div>
</div>

<div id="some_div">

</div>

在结果页面的标题中,我看到引用了这些脚本:

<script src="/Scripts/jquery-1.6.4.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

该链接如下所示:

<div><a data-ajax="true" data-ajax-mode="after" data-ajax-update="#some_div" href="/Tournament/CurrentTime">Test</a></div>

在控制器中:

public string CurrentTime()
{
    return DateTime.Now.ToLongTimeString();
}

在我的web.config(在应用程序的根目录下):

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

我的问题是:每当我单击链接时,结果(当前时间)总是替换整个页面 - 它不会插入some_div/之后/之前。 谢谢

asp.net-mvc-4 unobtrusive-ajax

评论

0赞 Piotr Stapp 5/4/2013
查看 Chrome 或 Firefox 中的“错误”控制台。可能您的脚本未加载
0赞 Jaroslav Bačkora 5/4/2013
@Garath:谢谢!FireBug 发现:TypeError: $(...)。on 不是函数 $(document).on(“click”, “a[data-ajax=true]”, function (evt) { 但我没有编辑脚本(至少我不知道)。请问我该如何解决这个问题?它位于 jquery.unobtrusive-ajax 文件中。谢谢

答:

1赞 Piotr Stapp 5/4/2013 #1

根据您的评论,答案很简单,您必须升级jQuery。该方法从 jquery 1.7 开始工作。我建议使用 jquery 1.7.2,因为 mvc 脚本有时会在更高版本上出现问题on

评论

0赞 Jaroslav Bačkora 5/4/2013
非常感谢,现在它工作了。有没有机会将jquery.unobtrusive-ajax与较新版本的jQuery一起使用?
0赞 Piotr Stapp 5/4/2013
你可以看这里 stackoverflow.com/questions/14391867/...
0赞 Piotr Stapp 5/4/2013
更新了 jquery 验证 nuget.org/packages/jQuery.Validation/1.11.0