簡體   English   中英

一個asp.net路由問題

[英]an asp.net routing issue

我在Global.asax上的路線實施

 protected void Application_Start(object sender, EventArgs e)
        {
            this.intRoutes(RouteTable.Routes);
        }

void intRoutes(RouteCollection Rts)
        {
            Rts.MapPageRoute("search", "{language}/{page}", "~/search.aspx");
            Rts.MapPageRoute("category", "{language}/{name}/{no}/{categoryname}", "~/category.aspx");
            Rts.MapPageRoute("product", "{language}/{name}/{no}/{productname}", "~/product.aspx");
        }

問題是; 如果我在超鏈接上使用產品路由,如下所示;

<asp:HyperLink ID="hyProduct" 
        NavigateUrl='<%#HttpUtility.UrlDecode(((Page)HttpContext.Current.Handler).GetRouteUrl("product", new{ language=getUIFromHelper(),name=getNameFromHelper(),no=Eval("code"),productname=getProductNameFromHelper(Eval("name"))})) %>' runat="server" Text="something" />

一切正常,鏈接按預期方式編寫,例如

/en/products/06.008.001.150.0510/davis-fish-seeker-green

但是,當我單擊該鏈接時, category.aspx頁面運行的是product.aspx。

我錯過了什么嗎?

是的,路由器如何告訴您想要哪一個? 它們都有四個沒有固定目錄的占位符。 沒有辦法說出是哪一個。

您需要執行類似添加固定目錄之類的操作,以便可以區分兩者:

Rts.MapPageRoute(..., "{language}/Category/{no}/{categoryname}", ...
Rts.MapPageRoute(..., "{language}/Product/{no}/{productname}", ...

我添加了類別和產品路線這兩個額外的虛擬文件夾,分別是/ c // p /

void intRoutes(RouteCollection Rts)
        {
            Rts.MapPageRoute("search", "{language}/{page}", "~/search.aspx");
            Rts.MapPageRoute("category", "{language}/c/{name}/{no}/{categoryname}", "~/category.aspx");
            Rts.MapPageRoute("product", "{language}/p/{name}/{no}/{productname}", "~/product.aspx");
        }

現在,路由器可以區分需要哪個了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM