Asp.net mvc 按字符串id的ASP.NET MVC路由?

Asp.net mvc 按字符串id的ASP.NET MVC路由?,asp.net-mvc,routes,asp.net-mvc-routing,Asp.net Mvc,Routes,Asp.net Mvc Routing,在ASP.NET 2中,如何创建允许通过字符串id(例如ProductCode)查找对象(例如Product)的路由?通过整型id(例如ProductId)查找同一对象的路径是自动的,所以我不知道它是如何工作的 按id自动路由为: /Product/1 如何创建使用字符串id的第二条路由 /Product/red-widget 如何才能使两条路由都可用?您应该看看如何使用路由约束来实现这一点。看 在上面,约束正则表达式“\w+”应限制为仅匹配“word”字符的路由(查看正则表达式文档以了解此

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

按id自动路由为:

/Product/1
如何创建使用字符串id的第二条路由

/Product/red-widget

如何才能使两条路由都可用?

您应该看看如何使用路由约束来实现这一点。看


在上面,约束正则表达式“\w+”应限制为仅匹配“word”字符的路由(查看正则表达式文档以了解此处使用的模式的更多详细信息)。

并确保将其放在默认路由之前,否则它将永远不会被命中。不幸的是,这会中断我的几个自动路由,因为它们与正则表达式匹配,例如/产品/列表等。我是否需要在此新路线之前为列表添加路线?如何创建基本路线??因为它们是自动的,我不知道怎么做。是的,你必须把订购东西作为使用匹配的第一条路线。默认路由与{controller}/{action}/{id}匹配。您可以在此之前显式列出路由,如{controller}/list/或{controller}/otherAction/{id},这些路由将首先匹配(仅当路径的第二段是“list”或“otherAction”)。很抱歉,它不起作用:/Product/1正在将新路由与正则表达式匹配。是否\w+可能包含数字?我的错误是\w也匹配数字。。。
routes.MapRoute(
    "Product",
    "Product/{productId}",
    new {controller="Product", action="DetailsByName"},
    new {productId = @"\w+" }
 );