如果存在,如何使用第二个routedata值

问题描述 投票:0回答:1

我使用带有一个变量的asp.net路由没有问题,但是我想使用两个变量,第二个变量不是必须的。它可以是也可以不是。

想使用路线:

products/{a}/{id}
services/{b}/{id}

在这种情况下,我必须输入“ a”变量和“ id”变量才能访问网址。但是,如果没有{id}变量,我想打开网址:

products/{a}
services/{b}

如果我从路由中的网址中删除{id},则上述网址正常工作。

我试图添加{* id}并打开,但是在打开页面时出现冲突。我发现{id?}有解决方案,但会导致路由错误。有什么建议吗?

我的解决方案:

我添加了一条新路线来解决此问题。这不是最好的,但可以工作。如果您在同一路线上有更好的解决方案,请与我们分享。

routes.MapPageRoute("Products", "products/{a}", "~/products.aspx");
routes.MapPageRoute("Services", "services/{b}", "~/services.aspx");
routes.MapPageRoute("Productsid", "products/{a}/{id}", "~/products.aspx");
routes.MapPageRoute("Servicesid", "services/{b}/{id}", "~/services.aspx");
c# asp.net routing url-routing query-string
1个回答
0
投票

也许您可以通过添加规则使{id}参数为可选:

    routes.MapPageRoute(
       routeName: "Products",
       routeUrl: "products/{a}/{id}",
       physicalFile: "~/products.aspx",
       checkPhysicalUrlAccess: true,
       defaults: new RouteValueDictionary(new {
       id = UrlParameter.Optional,
    });

这里是more,可以帮助您更多地了解自己的想法。

© www.soinside.com 2019 - 2024. All rights reserved.