我在ASP.NET 4中有这条路线
routes.MapPageRoute("Professions", // Route Name
"authors/profession/{Profession}/{letter}/page{pager}", // Url and Parameters
"~/Authors/Profession/Default.aspx", true,
new System.Web.Routing.RouteValueDictionary { { "letter", "a" }, { "pager", "1" } }); //
如果我像这样访问页面,它会起作用 http://www.mysite.com/authors/profession/actor/a/page1
但是这不起作用http://www.mysite.com/authors/profession/actor(它应该自动添加字母'a'和第1页,我做错了什么?
答案 0 :(得分:0)
您遇到的问题是路线中的文字“页面”, 后的{letter}
令牌(您未在示例网址中提供)。
要使路由引擎匹配该路由,您需要在网址中的某个位置同时显示“字母”和文本“页面”。因此,您的示例/authors/profession/actor
将不匹配,而/authors/profession/actor/a/page
将匹配,并使用{pager}
令牌的默认值1。< / p>
我认为解决这个问题的最佳方法是以下路线设置:
routes.MapPageRoute("Professions", // Route Name
"authors/profession/{profession}/{letter}/{pager}", // Url and Parameters
"~/Authors/Profession/Default.aspx", true,
new System.Web.Routing.RouteValueDictionary { { "letter", "a" }, { "pager", "1" } });
基本上,只需将“页面”文本从路径中取出,这样当你有/authors/profession/actor
时,它会直接转到字母“a”和页面“1”。完整网址就像/authors/profession/actor/d/34
。
这有意义吗?您的路由完全有效,但您始终必须为{letter}
令牌提供内容并在其中包含文本“页面”。