在多个 Controller 上配置 Asp.Net Mvc 路由时,可能会出现没有在 Action 上指定路由的情况,例如:
public class HomeController : Controller { public ActionResult Index() {} }
public class UserController : Controller { public ActionResult Profile() {} }
这将导致 Asp.Net Mvc 系统默认使用控制器和操作名称来构建路由,并且可能导致路由冲突,特别是当两个或多个控制器具有相同的操作名称时。为了解决这个问题,可以在路由配置中使用显式路由,例如:
routes.MapRoute( name: "Home", url: "", defaults: new { controller = "Home", action = "Index" } );
routes.MapRoute( name: "User", url: "user/{action}/{id}", defaults: new { controller = "User", action="Profile", id = UrlParameter.Optional } );
这将使控制器和操作的路由显式地定义,使它们更易于阅读和维护。