如果我在同一页面中的页面上使用查询字符串进行导航URL重定向

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

我试图单击products.aspx中的链接,然后重定向到另一个页面category.aspx。当我在路由中使用{* id}处理product.aspx上的querystring时,链接无法正常工作。发送相同的product.aspx页。

我的路线:

   routes.MapPageRoute("productsgroup", "products/{groupname}/{*id}", "~/products.aspx");
   routes.MapPageRoute("productscat", "products/brand/{bname}", "~/categories.aspx");

products.aspx页面中的超链接:

<asp:Hyperlink ID="hyper_link" runat="server" NavigateUrl='<% GetRouteUrl("productscat", new {bname=Eval("brand-name").ToString()})%>' Text="Category1"></asp:Hyperlink>

[超链接位于asp:Repeater中,并且Eval()在链接上工作正常,并且链接似乎正常,当我单击超链接时,URL更改但未发送category.aspx页面。

如果我删除查询字符串{* id}而不使用超链接,则效果很好。

我试图了解为什么会发生这种情况以及我们可以采取什么措施。

asp.net-mvc routing url-routing navigateurl
1个回答
0
投票

有一个简单的解决方案。更改路线顺序,您的目标网址和链接将起作用。

routes.MapPageRoute("productscat", "products/brand/{bname}", "~/categories.aspx");
routes.MapPageRoute("productsgroup", "products/{groupname}/{*id}", "~/products.aspx");

Routing认为目标url是“ productsgroup”,因为它知道该URL,并且目标url就是这样开始的。路由等待变量和第二条路由,就像它不存在用于路由一样。

我希望它会有所帮助。干杯。

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