【发布时间】:2014-11-19 09:46:10
【问题描述】:
我有 2 个区域 Admin 和 FrontEnd(按此顺序)。
当我在 FrontEnd 区域的视图中时,ActionLink 始终指向 Admin 区域:
@Html.ActionLink("Checkout", "Address", "Checkout")
将是http://localhost:53600/admin/Checkout/Address,但结帐控制器在我的前端区域。
我知道我可以通过在操作链接中指定一个 routedata 对象并设置 area = "FrontEnd" 来解决这个问题,但我不想这样做。我希望 ActionLink 助手默认使用我当前的路线。
这可能吗?
我在 actionlink 上阅读的所有问题都是人们询问如何链接到另一个区域,这表明它默认为他们的当前区域。这个问题只有我一个人吗?
编辑,这些是我的路线,您可以看到它们与正确的命名空间相关联:
管理员
public void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Administration_default",
"admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", area = "Administration", id = UrlParameter.Optional },
new[] { "CC.Web.Areas.Administration.Controllers" }
);
}
前端
public void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", area = "FrontEnd", id = UrlParameter.Optional},
new[] {"CC.Web.Areas.FrontEnd.Controllers"}
);
}
【问题讨论】:
-
您真的在使用区域吗?如果是这样,您应该使用
AreaRegistration类来注册这些区域及其路线。见msdn -
看起来前端不应该是一个区域,所以你可以只拥有标准的 MVC 控制器和带有额外管理区域的视图。
-
@DanielJ.G.我大约 15 分钟前读到了这篇文章,并注意到这是问题所在。它也解决了我的问题。随意按照这些思路发布答案,我会接受(尽管我还是找到了它)。感谢该地区的建议。
标签: asp.net-mvc razor actionlink html.actionlink asp.net-mvc-5.2