[英]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.