0

我正在尝试单击 products.aspx 中的链接并重定向到另一个页面 categories.aspx。当我在路由中使用 {*id} 来处理 products.aspx 上的查询字符串时,链接无法正常工作。发送相同的 products.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 更改但不发送 categories.aspx 页面。

如果我删除查询字符串 {*id} 并且不使用超链接就可以正常工作。

我试图了解它为什么会发生以及我们能做些什么。

4

1 回答 1

0

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

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

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

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

于 2019-09-27T11:11:20.067 回答