我正在尝试点击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中:中继器和Eval()在链接上运行良好,链接看起来很正常,当我单击超链接时,url会更改,但不会发送categories.aspx页面。
如果删除querystring {*id}而不使用超链接,则工作正常。
我想弄清楚为什么会发生这种事,我们能做些什么。
发布于 2019-09-27 11:11:20
有一个简单的解决办法。更改路线顺序,您的目标网址和链接将工作。
routes.MapPageRoute("productscat", "products/brand/{bname}", "~/categories.aspx");
routes.MapPageRoute("productsgroup", "products/{groupname}/{*id}", "~/products.aspx");路由认为目标url是"productsgroup“,因为它知道url和目标url是这样启动的。路由等待变量和第二条路由,就像它不存在于路由一样。
希望能帮上忙。干杯。
https://stackoverflow.com/questions/58118783
复制相似问题