products.aspx のリンクをクリックして、別のページの category.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} を削除して使用しない場合、ハイパーリンクは正常に機能します。
なぜそれが起こっているのか、そしてそれに対して何ができるのかを理解しようとしています。