asp.net webforms routing:可选参数
我想在我的路由表中添加可选参数。 比如我想在用户浏览产品目录是这样的: http://www.domain.com/browse/by-category/electronics/1,2,3等asp.net webforms routing:可选参数
现在我已经创造了这样的路线:
然而 routes.MapPageRoute(
"ProductsBrowse",
"browse/{BrowseBy}/{Category}",
"~/Pages/Products/Browse.aspx"
);
问题是,当用户输入http://www.domain.com/browse,我希望他们提出一个不同的页面,他们可以选择如何浏览的方式。所以参数{BrowseBy}和{Category}不会被使用。
有没有解决方法,然后为每个场景创建单独的路线?
谢谢你的时间! 亲切的问候, 马克
我只是创建单独的路线。
也就是说,你可以定义一个基于你定义的约定的自定义RouteHandler,自动发送这些特殊情况,就好像你有不同的路线。
或者,您可以使用自定义RouteHandler以及一个约定,以避免必须指定路径中的特定页面。这相当于asp.net MVC的功能。
我刚碰到这个问题,知道必须有办法做到这一点。有 -
MapPageRoute
有一个重载,允许您指定默认值。这里有一个基于你的代码的例子用法:
routes.MapPageRoute(
"ProductsBrowse",
"browse/{BrowseBy}/{Category}",
"~/Pages/Products/Browse.aspx",
false,
new RouteValueDictionary { { "Category", string.Empty } }
);
所以如果用户没有指定一个类别,这条路线仍然会被击中。我使用两条单独路由的问题是,我在我的站点周围设置了由路由名称生成的链接,并且不能有两个具有相同名称的路由。
这里有良好的文档从MSDN:here
试试这个:
routes.MapPageRoute(
"ProductsBrowse",
"browse/{BrowseBy}/{Category}/{*queryvalues}",
"~/Pages/Products/Browse.aspx"
);
感谢这个有用的提示。 – 2016-02-03 10:38:07
请参阅我的回答它展示了如何用一个路由做到这一点。 – 2011-08-20 18:15:27