这是我的第一个 ASP MVC 项目,所以我不知道该怎么做。
我有一个名为 Admin 的部分,它有一个 Admin 控制器。我只是将它用于索引页面。
在管理部分,有不同的部分。假设公司和业务线
我想为他们自己的 CompanyController 和 LineOfBusinessController 中的人处理所有事情
我希望路由以 Admin 为前缀,即。管理员/公司,管理员/公司/添加
我通过在默认路由之前添加一个路由来实现这一点
routes.MapRoute(
name: "Admin",
url: "Admin/{controller}/{action}/{id}",
defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
现在的问题是我所有的路由都选择了这个而不是默认的,这意味着其他所有的都变成了 Admin/Section 即 Admin/Home 等等.....
我尝试使用 Html.RouteLink 而不是 ActionLink 并且 URL 的格式正确,但是当我转到 Admin/Company 时它找不到,因为它假定 Company 在 AdminController
我怎样才能正确路由呢?
编辑
这是我的路线,然后是我的链接
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Admin",
url: "Admin/{controller}/{action}/{id}",
defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
链接
<li>@Html.ActionLink("Home", "Index", new { controller = "Home" }, ViewBag.SelectedNav == "Home" ? new { @class = "active" } : null)</li>
链接结束 /Admin/Home
更新
由于我最终探索并最终使用了区域,因此没有在此处标记答案。在一个答案中提出了建议,但其余答案不正确,因此我不想误导任何人。感谢您的区域建议