如何修改MVC路由以获取多个一流的URL

时间:2012-01-16 18:35:27

标签: asp.net-mvc

我的mvc应用程序的默认路由设置如:

   routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

我有带有Index()和About()的Home控制器。请告诉我如何修改路由以获取domain.com/Index和domain.com/About网址?

谢谢

1 个答案:

答案 0 :(得分:1)

在默认路线之前添加此项。通过在默认路由之前添加它,如果匹配,它将用于设置RouteDictionary值。未经测试,但它应该映射仅包含indexabout的单个组件的网址。请注意,这假设您没有索引或控制器。路由约束很重要,因为它使每个控制器的索引操作不会匹配,例如controller/

 routes.MapRoute(
       "IndexOrAbout",
       "{action}",
       new { controller = "home", action = "index", id = "" },
           new
           {
              action = "(index)|(about)"
           }
 );

注意,如果您需要将其扩展到更多顶级路由或使其更具动态性,您可以使用自定义路由约束来从数据库或配置中提取顶级值。此时,您可能希望将其从使用action参数更改为id参数,并且只有一个操作使用id来确定要显示的内容而不是每个值都有一个操作。