路由表问题,路由多个url具有相同的模式
本文关键字:路由 模式 url 问题 | 更新日期: 2023-09-27 18:09:11
代码:
public static void RegisterRoutes(System.Web.Routing.RouteCollection routes)
{
routes.MapPageRoute("Partners Details", "Partner/{PartnerName}", "~/Partners/PartnerDetails.aspx", false, new RouteValueDictionary());
routes.MapPageRoute("Partners Offers", "Partner/{PartnerID}", "~/Partners/Partners.aspx", false, new RouteValueDictionary());
}
默认情况下,Url可以从不同的链接标签调用。Aspx页面,但问题是,当我试图访问合作伙伴。aspx会将我重定向到PartnerDetails。Aspx我很困惑为什么这种奇怪的行为?如何解决?
所以问题是路由是相同的除了数据类型。但是,您还没有为这些路由指定constraints
。我们这样做:
routes.MapPageRoute("Partners Details",
"Partner/{PartnerName}",
"~/Partners/PartnerDetails.aspx",
false,
new RouteValueDictionary(),
new RouteValueDictionary() {
"PartnerName", "[a-zA-Z's]"
});
routes.MapPageRoute("Partners Offers",
"Partner/{PartnerID}",
"~/Partners/Partners.aspx",
false,
new RouteValueDictionary(),
new RouteValueDictionary() {
"PartnerID", @"'d"
});
让我们来分析一下。constraints
使用Regex来确定键(例如PartnerID)所在位置的字符串值是否匹配。如果没有,则跳过该路由,并移动到下一个路由。但我想让你们思考一下为什么它不起作用。假设你必须编写代码来解释路由,并且你得到了这样的链接:
http://.../Partner/123
与"Partner/{PartnerName}"
不匹配吗?我的意思是{PartnerName}
没有键入任何方式,它只是一个占位符,对吗?
希望你明白。