我希望有一条类似的路线:www.abc.com/companyName/Controller/Action/Id 但是,所有公司名称都需要映射到相同的“基础”控制器,关注名称。我只需要companyName进行身份验证。
另外,如果没有提供companyName,我需要完全映射到另一组控制器。
我该怎么做?我也很欣赏一个好的路由资源,所以我不必问这样的问题。
答案 0 :(得分:4)
routes.MapRoute(
"CompanyRoute",
"{companyName}/{controller}/{action}/{id}",
new { controller = "MyBaseCompanyController", action = "Index", id = "" }
);
routes.MapRoute(
"NoCompanyRoute",
"{controller}/{action}/{id}",
new {controller = "DifferentDefaultController", action = "Index", id = "" });
路由是一个非常复杂的主题,但它在Professional ASP.Net MVC 1.0中得到了很好的阐述。对于在线资源,我建议starting here,然后回到Stack Overflow;)
答案 1 :(得分:1)
如果您希望解决由于路由引起的错误。我建议使用以下工具,我发现它非常有用。
答案 2 :(得分:0)
转到Global.asax.cs,并在“默认”路由之前在RegisterRoutes()方法中添加以下路由:
routes.MapRoute(
"Vanity", // Route name
"{company}/{controller}/{action}/{id}", // URL with parameters
new { company = "", controller = "Home", action = "Index", id = "" } // Parameter defaults
);