[英]ASP.NET MVC 3 Url.Action matching
我定义了以下两条路线:
routes.MapRoute(null, "" // ~/
,new { controller="Products", action="List", page=1 });
routes.MapRoute(null, "{category}/Page{page}" // ~/CategoryName/Page21
, new { controller = "Products", action = "List", page = 1 }
, new { page = @"\d+" } //page must be numerical
);
我在ProductsController使用的视图中使用此代码生成URL: Url.Action("List", new {page=p, category=Model.CurrentCategory})
使用当前配置,我得到以下URL: / Riding / Page2
但是,如果我省略了第一条路线的默认页面参数,我会改为使用此URL: /?category = Riding&page = 2
在我看来, Url.Action()
可以匹配两个路由,并且如果我在第一个路由中指定了默认页面参数但是如果省略该参数则选择使用第一个路由,则决定使用第二个路由。
鉴于我正在为页面参数提供一个值,为什么从路由的默认值中删除它会使我得到的URL有所不同?
谢谢!
尝试安装NuGet包Glimpse 。 它具有出色的路由调试功能,应该可以为您提供帮助。
这是Scott Hanselan关于如何使用它的博客文章: 第5周的NuGet包
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.