路由表问题,路由多个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我很困惑为什么这种奇怪的行为?如何解决?

路由表问题,路由多个url具有相同的模式

所以问题是路由是相同的除了数据类型。但是,您还没有为这些路由指定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}没有键入任何方式,它只是一个占位符,对吗?

希望你明白。