【发布时间】:2014-01-15 20:14:30
【问题描述】:
我很难将 Ajax.Actionlink 连接到正确的控制器 ActionResult。
我的项目的 Areas 文件夹中有一个 View 页面(路径是 Areas/Feed/Views/Feed/Feed.cshtml) 并且控制器在同一个文件夹中(路径是(Areas/Feed/Controllers/FeedController.cs)
在 Feed.cshtml 中,我有一个简单的 Ajax.Actionresult,如下所示:
@Ajax.ActionLink("Most Popular", "SortMostPopular", "Feed", new { Area = "Feed", UserLoginId = Model.FeedModel.UserLoginId }, new AjaxOptions { UpdateTargetId = "fd-div-feed" }, new { @role = "menuitem", @tabindex = "-1" })
还有ActionResult方法:
public ActionResult SortMostPopular(long UserLoginId)
{
return PartialView();
}
ajax.Actionlink 应该通过 long 类型的 UserLoginId 发送给方法并返回一个 Partialview。出于测试目的,它还没有做任何事情,我在 return PartialView() 之前放置了一个断点以查看它是否会到达那里 - 但它没有:'(
相反,当我单击该链接时,它会使用整个视图本身刷新 TargetId(在本例中为 div)fd-div-feed。这让我发疯了哈哈。有谁知道为什么会这样?我不想刷新整个页面,只刷新目标元素。
另外....我检查了源代码,我正确地引用了 unobtrusive、jquery 和所有这些。
谢谢!
编辑:
这是我的 javascript 文件,按此顺序排列:
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap_offcanvas")
@Scripts.Render("~/Scripts/Helpers/ScrollbarHelper.js")
@Scripts.Render("~/Scripts/jquery.json2.js")
【问题讨论】:
-
检查浏览器的开发控制台以监控网络请求的详细信息。 ActionLink 的默认 HttpMethod 是 GET,因此您可能会看到旧的缓存结果(因此您不会遇到断点)。
-
我检查了控制台。 jquery.unbtrusive 文件似乎有问题?我收到一个错误:'Empty string passing to getElementById().' on line fn = fn[parts.shift()]; where fn is undefined??
-
您可能以错误的顺序包含了 javascript 库。确保 jquery 在 jquery.unobtrusive 之前。请张贴您的 javascript 包括,以便我们确保一切正常。
-
我刚刚更新了我的帖子。谢谢!
-
假设 jqueryval 包含 jquery.unobtrusive-ajax.js,顺序看起来是正确的。
标签: jquery ajax asp.net-mvc-4