【发布时间】:2015-06-22 21:05:42
【问题描述】:
我有一个管理功能区。我希望我的网址看起来像这样:
admin/{controller}/{slug}.{id}/{action} (即 admin/user/getoutofmylab.1/edit) admin/{controller}/{action} (即admin/user,这只是用户控制器的索引页)
当我从应用程序的根目录浏览到用户控制器时,我得到了 admin/user。用户控制器的编辑操作的链接正确生成。但是,如果我从该控制器中的任何其他操作中链接到索引操作,则会生成如下 URL:admin/user/{slug}.{id},如果单击它,则会生成 404 not found 错误。
这是我的 AdminAreaRegisration:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRouteLowercase(
"Admin_Applications",
"admin/{controller}/{slug}.{id}/{action}",
new { controller = "Application", action = "Index", id = UrlParameter.Optional, slug = "" },
new string[] { "Web.Portal.Areas.Admin.Controllers" }
);
context.MapRouteLowercase(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Web.Portal.Areas.Admin.Controllers" }
);
}
我怎样才能达到预期的效果?
谢谢
【问题讨论】:
-
所以你想从一个控制器中的动作链接到单独控制器中的动作?
-
这些都在同一个控制器中。只是当我在“编辑”操作中时,例如,_Layout 页面上的“索引”操作的链接会使用 slug 生成,而它应该只是 /admin/user。
-
似乎使用 Html.RouteLink 并指定动作有效,而不是使用 Html.ActionLink:
@Html.RouteLink("List Applications", "Admin_Default", new { action = "Index" })
标签: c# asp.net-mvc routes