ASP.NET 可能包含连字符的 MVC 路由参数

ASP.NET MVC route parameter that may have hyphens

我们有一个工作控制器,如下所示。 name 参数可能类似于 "Widget"、"A09912" 或 "W-0-090-B"。当参数中有连字符时路由失败。

[HttpGet]
[Route( @"Product/{name:alpha}" )]
public ActionResult Index( string name )
{
    IList<Product> list = Repository.GetByName( name );
    return View( list );
}

有没有办法配置一些东西,使带连字符的参数起作用?

是的,有一种配置方法可以使带连字符的参数起作用。

删除 alpha 约束:

{x:alpha} Matches uppercase or lowercase Latin alphabet characters (a-z, A-Z)

通过包含带连字符的参数,它与您当前使用的约束不匹配。

查看 ASP.NET Web 中的属性路由中的 Route Constraints API 2