ASP.NET MVC路由字符串ID?

时间:2011-10-01 03:51:36

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

在ASP.NET 2中,如何创建允许通过字符串id(例如ProductCode)查找对象(例如Product)的路由?通过它的整数id(例如ProductId)查找同一对象的路由是自动的,所以我实际上并不知道它是如何工作的。

id的自动路由是:

/Product/1

如何创建使用字符串ID的第二条路线?

/Product/red-widget

我该怎么做以便两条路线都可用?

1 个答案:

答案 0 :(得分:20)

您应该看一下使用路由约束来执行此操作。见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 +”应限制为仅匹配“单词”字符的路由(有关此处使用的模式的更多详细信息,请查看正则表达式文档)。