View in Areas文件夹中的Ajax.Actionlink未命中Controller的ActionResult

时间:2014-01-15 20:14:30

标签: jquery ajax asp.net-mvc-4

我很难将Ajax.Actionlink连接到它的正确控制器ActionResult。

我的项目的Regions文件夹中有一个View页面(路径为 Areas / Feed / Views / Feed / Feed.cshtml ) 控制器位于同一个文件夹中(路径为(区域/ 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()之前设置一个断点,看它是否会在那里 - 但它不会:'(

相反,当我点击链接时,它会刷新整个视图本身的TargetId(在本例中为div) fd-div-feed 。这让我疯狂哈哈。任何人都知道为什么会这样吗?我不想刷新整个页面,只需要刷新目标元素。

另外....我检查了源代码,我正确引用了不引人注意的,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")

2 个答案:

答案 0 :(得分:0)

我会尝试以下方法:

1)确保您确实引用了不显眼的ajax库。

我知道这似乎微不足道,但从我读过的问题来看,它几乎总是证明是这样。

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

2)确保正确订购捆绑的脚本。

如果您使用的是外卡,则按字母顺序排序,这通常不是您想要的。 我无法从你的问题中说出这一点,因为RegisterBundles是加载实际脚本文件的地方。

答案 1 :(得分:0)

我终于弄明白为什么触发器没有发生。我的路由配置不正确,需要稍微更改一下。 我最初有类似的东西:

Feed/{Username}

但这需要改为:

Feed/{Username}/{action}/{id} 

以适应其他方法调用。因此,如果有疑问,请检查您的路线配置!