了解Asp.net MVC Route配置

时间:2014-10-06 23:55:03

标签: asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing

我正在阅读一篇在线文章,其中显示了以下路由器定义: -

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+" }
); 

但我无法理解这个路由器规则是什么意思以及它们将如何工作,我通常不会修改路由器规则并保持默认定义不变? 感谢

1 个答案:

答案 0 :(得分:0)

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

routes.IgnoreRoute(" {资源}个.axd / {*} PATHINFO&#34); < - 告诉它忽略下载资源文件的尝试。

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

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

最后一个条目设置控制器操作的默认值。一个新作品是" new {page = @" \ d +"这是regex表达式,它将有效值限制为0-9之间的数字,而+需要1位或更多位数。作为一个额外的花絮,新的{}< - 如果你想做一些更具体的路由处理,自定义routerhandler方法将与路由相关联。搜索IRouteHandler了解详情。

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

我希望这会有所帮助。路由有时可能是一种真正的痛苦。