MVC 4 Ajax没有更新页面中的部分视图

时间:2012-11-29 12:50:14

标签: c# ajax asp.net-mvc razor

我正在使用MVC 4进行网站制作。这是一个列出音乐的网站,用户可以创建播放列表(如购物车购物)。

我对每个音乐都有这个应该在Ajax中执行的动作链接:

@Ajax.ActionLink("Adicionar à Playlist","AddPlaylist", new { id = item.MusicaID }, new AjaxOptions {UpdateTargetId="playlist", InsertionMode=InsertionMode.Replace})

来自控制器的动作方法返回一个PartialView(播放列表的购物车),只有那个应该更新,但不是让整个页面更新该部分,我得到局部视图,而不再是页面上的。

这是我渲染PartialView的部分:

<section id="playlist">
     @Html.Partial("_PlaylistPartial")
</section>

这不应该像我一样工作吗?

4 个答案:

答案 0 :(得分:2)

确保已包含

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

答案 1 :(得分:1)

这是一件蠢事。

首先,我的jquery.unobtrusive-ajax.min.js包含的内容不像我一样:

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

所以我这样说:

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")

仍然没有用,因为我还需要包含JQuery文件:

@Scripts.Render("~/Scripts/jquery-1.7.1.js")
@Scripts.Render("~/Scripts/jquery.1.7.2.min.js")

这种方式有效:)

答案 2 :(得分:1)

派对有点晚了,但我遇到了类似的问题。解决方案是将此行添加到_Layout.cshtml:

@Scripts.Render("~/bundles/jqueryval")

答案 3 :(得分:0)

首先,在包含Microsoft.JQuery.Unobtrusive.Ajax之后,从NuGet Manager安装~/Scripts/jquery.unobtrusive,然后在BundleConfig中添加jquery-{version}.js;看起来与此类似:

 bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js",
                    "~/Scripts/jquery.unobtrusive*));
相关问题