如果有,我如何使用第二个路由数据值
How can i use second routedata value if there is
我正在使用 asp.net 路由和一个变量没有问题,但我想使用两个变量,第二个变量不是必须的。可以是也可以不是。
想使用路线:
products/{a}/{id}
services/{b}/{id}
在这种情况下,我必须输入 "a" 变量和 "id" 变量才能到达 url。但是如果没有像这样的 {id} 变量,我想打开 url:
products/{a}
services/{b}
如果我在路由中从 url 中删除 {id},上面的 url 可以正常工作。
我尝试添加 {*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");
也许您可以通过添加规则使您的 {id} 参数可选:
routes.MapPageRoute(
routeName: "Products",
routeUrl: "products/{a}/{id}",
physicalFile: "~/products.aspx",
checkPhysicalUrlAccess: true,
defaults: new RouteValueDictionary(new {
id = UrlParameter.Optional,
});
这里是,它可以帮助您更深入地了解您的想法。
我正在使用 asp.net 路由和一个变量没有问题,但我想使用两个变量,第二个变量不是必须的。可以是也可以不是。
想使用路线:
products/{a}/{id}
services/{b}/{id}
在这种情况下,我必须输入 "a" 变量和 "id" 变量才能到达 url。但是如果没有像这样的 {id} 变量,我想打开 url:
products/{a}
services/{b}
如果我在路由中从 url 中删除 {id},上面的 url 可以正常工作。
我尝试添加 {*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");
也许您可以通过添加规则使您的 {id} 参数可选:
routes.MapPageRoute(
routeName: "Products",
routeUrl: "products/{a}/{id}",
physicalFile: "~/products.aspx",
checkPhysicalUrlAccess: true,
defaults: new RouteValueDictionary(new {
id = UrlParameter.Optional,
});
这里是