ASP jQuery .load方法不触发控制器动作方法

时间:2017-05-14 01:54:53

标签: javascript jquery ajax asp.net-mvc

我正在尝试使用实体框架使用AJAX和JQuery在局部视图中显示列表。预期的功能是让用户能够单击导航栏上的操作链接,该链接又会引发一个JQuery事件,该事件将控制器操作方法中的列表注入局部视图。为此,我使用.load()jQuery方法。但是,每次单击操作链接时,jquery事件都会正常触发,但部分视图永远不会被控制器方法调用。

通过查看Chrome中的newtork选项卡,我可以看到以下内容:network stats

这是我的设置:

的HomeController

public ActionResult ListeArtistes()
{
    ViewBag.Message = "Your application description page.";
    Debug.WriteLine("Liste artistes called");
    return PartialView(db.Artistes.ToList());
}

在_Layout.cshtml中,我有一个带有id的操作链接:

@Html.ActionLink("Artistes", "", "", new { id = "Artistes" })

在_Layout.cshtml的底部:

<script src="~/Scripts/MediaScripts.js"></script>

最后,在我的MediaScripts.js中:

function onNav_ListeArtistes() {
    $("#viewPlaceHolder").load('@Url.Action("ListeArtistes", "Home")')
        .on("click", function () { artisteListeAlbum(); });

}

关于我可能做错的任何想法? 谢谢你的提示!

-Jeff

1 个答案:

答案 0 :(得分:0)

Razor代码在您将其放入JS文件时不起作用 MediaScripts.js

function onNav_ListeArtistes() {
    $("#viewPlaceHolder").load('@Url.Action("ListeArtistes", "Home")') // <- This will not work.
        .on("click", function () { artisteListeAlbum(); });
}

如果您需要将一些数据传递到JS文件,只需使用data-*属性将值存储到CSHTML中:

<body data-artistes-url='@Url.Action("ListeArtistes", "Home")'>
<!-- other markups -->
</body>

然后进入你的JS文件:

function onNav_ListeArtistes() {
    $("#viewPlaceHolder").load($('body').data('artistes-url')) <-- here you retrieve the URL stored into data-artistes-url attributes.
        .on("click", function () { artisteListeAlbum(); });
}