2014-10-06 92 views
0

我读了网上的文章,其显示以下路由器定义: -了解Asp.net MVC路由配置

public static void RegisterRoutes(RouteCollection routes) { 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute(null, 
205 
"", 
new { 
controller = "Product", action = "List", 
category = (string)null, page = 1 
} 
); 
routes.MapRoute(null, 
"Page{page}", 
new { controller = "Product", action = "List", category = 
(string)null }, 
new { page = @"\d+" } 
); 

但我不明白这是否路由器的规则意味着,他们将如何工作,我通常不会修改路由器规则并保持默认定义原样? 谢谢

回答

0

老实说,我真的不想创建一个新的应用程序,并测试出路。假设它没有任何不可预见的问题,那么它在做什么:

routes.IgnoreRoute(“{resource} .axd/{* pathInfo}”); < - 告诉它忽略尝试下载资源文件。

null应该是路由名称。他们没有分配一个名字。我猜205是一个产品ID,“”操作默认为“List”,如果你没有添加一个类别到查询字符串,那么它被分配一个空值,然后被转换成一个字符串。这对我来说似乎有点奇怪。没有测试,它会给出一个空字符串或一个空值。该页面将用于浏览页面。相当多的这条路线依赖于特定的服务器端操作。

routes.MapRoute(null, 
205 
"", 
new { 
controller = "Product", action = "List", 
category = (string)null, page = 1 
} 
); 

最后一项设置控制器操作的默认值。新的一块是“new {page = @”\ d +“},这是正则表达式,它将有效值限制在0-9之间的一个数字,+需要一个或多个数字作为额外的珍闻,新的{ } < - 其中定制routerhandler方法将会随着一个途径,如果你想要做一些更具体的途径处理相关搜索IRouteHandler的细节

routes.MapRoute(null, 
"Page{page}", 
new { controller = "Product", action = "List", category = 
(string)null }, 
new { page = @"\d+" } 
); 

我希望这有助于路由可以是一个真正的痛苦,有时。