简单的问题。我想要这样的东西:
http:/ / www.mywebsite.com/microsoft或http:/ / www .mywebsite.com / apple 所以微软和苹果应该像id一样,但我就像默认的控制器一样使用它
这是默认路线
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "index", id = UrlParameter.Optional } // Parameter defaults
);
这会产生类似http:/ / www.mywebsite .com / home / aboutus或http://www.mywebsite .com / products / detail / 10
我添加了另一条路线
routes.MapRoute(
"Partner", // Route name
"{id}", // URL with parameters
new { controller = "Home", action = "Partners"}, // Parameter defaults
new { id = @"\d+" }
);
但是这个约束只允许数字id。
我如何实现我想要的目标。
感谢
答案 0 :(得分:4)
如果表达式只能包含字母和数字,则可以修改约束:
routes.MapRoute(
"Partner", // Route name
"{id}", // URL with parameters
new { controller = "Home", action = "Partners"}, // Parameter defaults
new { id = @"^[a-zA-Z0-9]+$" }
);
答案 1 :(得分:0)
如果您不想提供数字约束,只需删除第4个参数,即
routes.MapRoute("Partner", "{id}", new { controller = "Home", action = "Partners"});
第4个参数是一个匿名对象,它为您定义的路径参数提供约束。匿名对象成员的名称对应于路由参数 - 在本例中为“controller”或“action”或“id”,这些成员的值为正则表达式,用于约束值参数必须具有匹配路线。 “\ d +”表示id值必须由一个或多个数字组成(仅限)。
答案 2 :(得分:0)
不确定您要实现的目标,但看起来您需要自定义路径约束。看一看这个例子:
请记住首先注册路线约束