3
我有以下两种途径来定义:ASP.NET MVC 3 Url.Action匹配
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
);
我生成使用视图此代码的URL正在使用的ProductsController:Url.Action("List", new {page=p, category=Model.CurrentCategory})
随着当前的配置,我得到这个网址:/骑马/第2页
不过,如果我是忽略默认页面参数从第一条路,我得到这个网址,而不是:/类别=骑&页= 2
在我看来,那Url.Action()
可以匹配这两条路径,并且正在使用第二个途径,如果我有默认在第一路指定页面参数的决定但是如果该参数被省略,则选择使用第一路由。
鉴于我为页面参数提供了一个值,为什么要从路由的默认值中排除它会影响我返回的URL?
谢谢!
谢谢你,@JamesAllen。我试过Glimpse。它向我显示了匹配我的页面的路线。我无法找到任何可以告诉我为什么我的视图中的Url.Action()选择我在帖子中提到的路线的信息。 – Ryan 2011-04-21 08:18:06