我的默认路由配置声明如下:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
如果我有一个团队控制器,我想向团队展示URL:
http://example.com/Teams/Show/1
在不影响其余路线的情况下,有一种方法可以配置它,因此它只显示为:
http://example.com/Teams/Arizona
答案 0 :(得分:2)
是。一种方法是使用属性路由。
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
在RouteConfig
或同等内容中:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
}
}
在您感兴趣的控制器中:
[Route("Teams/{teamName}")]
public ActionResult ShowTeam(string teamName)
{
var teamInfoViewModel = Service.GetViewModel(teamName);
return View(teamInfoViewModel);
}