我正在尝试使用实体框架使用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
答案 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(); });
}