Asp.net MVC5系列——Routing特性(1)

2014 年 9 月 3 日3840

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) 返回网络频道首页

0 0