我的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网址?
谢谢
答案 0 :(得分:1)
在默认路线之前添加此项。通过在默认路由之前添加它,如果匹配,它将用于设置RouteDictionary值。未经测试,但它应该映射仅包含index
或about
的单个组件的网址。请注意,这假设您没有索引或控制器。路由约束很重要,因为它使每个控制器的索引操作不会匹配,例如controller/
。
routes.MapRoute(
"IndexOrAbout",
"{action}",
new { controller = "home", action = "index", id = "" },
new
{
action = "(index)|(about)"
}
);
注意,如果您需要将其扩展到更多顶级路由或使其更具动态性,您可以使用自定义路由约束来从数据库或配置中提取顶级值。此时,您可能希望将其从使用action参数更改为id参数,并且只有一个操作使用id来确定要显示的内容而不是每个值都有一个操作。