Asp.net MVC5系列——Routing特性(1)
ASP.NET MVC 5支持一种新的路由协议,称为路由特性。顾名思义,路由特性使用特性来定义路径。路由特性使你的Web应用程序URI有了更多的控制。当然,MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由。
路由特性
例如,一个电子商务网站可能有以下的路由规则:
{productId:int}/{productTitle}
Mapped to ProductsController.Show(int id)
{username}
Mapped to ProfilesController.Show(string username)
{username}/catalogs/{catalogId:int}/{catalogTitle}
Mapped to CatalogsController.Show(string username, int catalogId)
以往的ASP.NET MVC版本,该规则将设置在routeconfig.cs文件中,并指出实际控制器的Action方法,如:
当路由的定义与Action方法,在同一个源文件中而不是在外部配置类中声明,它可以更容易的处理URI和行动之间的映射的。以前的路径定义将使用以下,简单的特性就可以达到目的:
[Route("{productId:int}/{productTitle}")]publicActionResultShow(intproductId){...}
使用路由特性
首先得启用Attribute路由,我们可以调用MapMvcAttributeRoutes方法来启用Attribute路由:
也可以和常规的路由设置一起使用。
可选URI参数和参数的默认值
可以通过添加“?”标记一个参数为可选的参数,也可以为表单参数设置默认值(参数=value)。
在上面的例子中,/books和/books/1430210079将路由到View方法,前者将返回所有书的列表信息,后者将返回特定的书的信息。/books/lang和/books/lang/en将采用同样的方式。
路由前缀
在同一个控制器里面,路由以相同的前缀开始,例如:
你可以通过使用[routeprefix ]特性整个控制器设定一个共同的前缀:
如果需要定义不同的路由前缀,可以在方法特性上使用波浪号~覆盖原来的前缀,例如:
1
内容导航
第 1 页:路由特性 第 2 页:默认路由 第 3 页:路由名、区域
原文:Asp.net MVC5系列——Routing特性(1) 返回网络频道首页