想知道我是否可以就如何处理我正在处理的Web应用程序的路由获得一些意见。由于它是一个相当复杂的应用程序,有许多区域,默认路由并没有完全削减它。这是设置:
我想要的网址 - /management/assets/course/edit/id
目前,我们有一个管理区域。
我无法理解如何将/management/{controller}/{action}/{id}
转换为/management/assets/{controller}/{action}/{id}
如果有更好的做法,请告诉我。我也在研究MVC5中的新属性路由作为解决方案。
答案 0 :(得分:1)
AttributeRouting应该是解决它的方法:
[RouteArea("management")]
[RoutePrefix("assets/course")]
public class AssetsCourseController : Controller
{
[Route("edit/{id}")]
public ActionResult Edit(string id) { ... }
}
当您拥有深层次的路由层次时,这可以让您更好地控制路由并大大简化自定义路由。
要启用它,请在RouteConfig.cs
:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Setup attributing routing rules
routes.MapMvcAttributeRoutes();
// You can comment out the old routing if you don't need it,
// but it can work in hybrid mode without issues
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
您可以留在旧路由中并拥有混合路由,并且只有在需要时才会覆盖AttributeRouting,如果您已经有一个工作站点并且需要保持其工作。