如果变量为null,我正在尝试重定向到另一条路线。它如何给出重定向循环错误。
路线:
routes.MapPageRoute("activities", "activities/{category}", "~/Pages/showAllActivities.aspx");
routes.MapPageRoute("activitiesSubPage", "activities/{page}", "~/default.aspx");
showAllActivities.aspx上的代码:
if (category != null)
{
..
}
else
Response.RedirectToRoute("activitiesSubPage", new { page = "1"});
两条路线网址都需要以“活动”开头。
我该如何做到这一点?
答案 0 :(得分:1)
如果路径中的类别和页面参数都是数字,则ASP.NET无法识别,因此,例如,/activities/2
将与第一条路线匹配并进行处理......
如果它们不同,例如category是字符串而page是数字,则MapPageRoute有this overload,您可以在其中为规则提供默认值和约束(例如/activities/{page}
路线只接受数字:
routes.MapPageRoute("activitiesSubPage", "activities/{page}", "~/default.aspx",
new RouteValueDictionary() { { "page", 0 } },
new RouteValueDictionary() { { "page", "[0-9]+" } });
);
routes.MapPageRoute("activities", "activities/{category}", "~/Pages/showAllActivities.aspx");
请记住,此配置会将/activites
路由发送到/activities/0
,默认为0。我已将{page}路由放在上面,因此首先进行评估,过去的任何内容都会被下一条规则截获。
答案 1 :(得分:0)
问题是它不知道他是否通过category
或page
。
您可以做的是将其映射到类似/activities/category/{id}
(类别ID /名称)和/activities/page/{id}
(页面ID)的内容。放/activities/{id}
是没有意义的,因为它不是活动ID,而是页码。
答案 2 :(得分:0)