在ASP.NET 2中,如何创建一条路由规则来通过字符串id(例如ProductCode)查找对象(例如Product)?通过整数id(例如ProductId)查找同一个对象的路由是自动的,因此我不知道它是如何工作的。
根据id自动生成的路由为:
/Product/1
我该如何创建另一个使用字符串id的路由?
/Product/red-widget
我该如何做到两条路由都可用?
在ASP.NET 2中,如何创建一条路由规则来通过字符串id(例如ProductCode)查找对象(例如Product)?通过整数id(例如ProductId)查找同一个对象的路由是自动的,因此我不知道它是如何工作的。
根据id自动生成的路由为:
/Product/1
我该如何创建另一个使用字符串id的路由?
/Product/red-widget
我该如何做到两条路由都可用?
您应该考虑使用路由约束来实现此操作。请参阅http://www.asp.net/mvc/tutorials/creating-a-route-constraint-cs
routes.MapRoute(
"Product",
"Product/{productId}",
new {controller="Product", action="DetailsByName"},
new {productId = @"\w+" }
);
在上述代码中,约束条件正则表达式"\w+"应该只限制匹配只含有"word"字符的路由(请查看正则表达式文档了解更多关于此处使用的模式的详情)。