MVC 5路由更改URL包含类名属性而不是ID和show动作

时间:2014-07-27 16:12:43

标签: asp.net-mvc-5 asp.net-mvc-routing

我的默认路由配置声明如下:

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

1 个答案:

答案 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);
}