2009-07-28 45 views
0

我正在建設一個網上商店,我對某些網址有點問題。ASP.Net - 由編碼的URL引起的路徑問題

我在我的數據庫中有一個部門和類別的大目錄,我用它來組成我的主菜單。

的網址的形式應用/存儲/部門/類別 (所有商店的URL重寫爲store.aspx?Querystringstuff)

的問題是,一些通過我的代碼工作時所產生的網址,但阻止正確加載頁面的CSS。

具體來說,源文本包含斜線的網址。 我是編碼源文本的URL,但我仍然有問題。

我的CSS是在主鏈接頁面級的工作

<link rel="stylesheet" type="text/css" href="~/CSS/Layout.css" runat="server"> 

實例鏈接 -

製冰機

http://localhost:1079/ABCWeb/Store/Refrigeration+Equipment/Ice+Machines.aspx

蒸汽表平底鍋

http://localhost:1079/ABCWeb/Store/Catering+%26+Buffet/Steam+Table+Pans.aspx

實施例鏈接該BREAK-

餐巾支架/分配器

http://localhost:1079/ABCWeb/Store/Tabletop/Napkin+Holders%2fDispensers.aspx

蠑/ Cheesemelters

http://localhost:1079/ABCWeb/Store/Cooking+Equipment/Salamanders%2fCheesemelters.aspx

如果它的事項這裏是我的構建URLs- 數組包含未編碼的項目路徑 第一個元素的數組,因爲它包含了當前存儲路徑的代碼。

private static System.Text.StringBuilder AppendAnchor(this System.Text.StringBuilder str, string[] path) 
{ 
    return str.Append("<a href='") 
     .Append(path.Aggregate((a, b) => a + "/" + HttpUtility.UrlEncode(b))) 
     .Append(".aspx'><span>") 
     .Append(HttpUtility.HtmlEncode(path[path.Length-1])) 
     .Append("</span></a>"); 
} 

感謝您的幫助!

回答

0

好吧,我再仔細看看 - 「〜」實際上似乎是問題出現的地方。

鏈接工作正常,但我認爲服務器在生成相對路徑時不能正確解析它...

這裏是從所生成的代碼中的工作鏈路

../../CSS/Layout.css

上。這裏的CSS鏈路在相同深度的破碎頁面上的CSS鏈路

../../../CSS/Layout.css"

這裏是一個非常醜陋的修復工程 - 不確定是否有更好的方法

<link rel="stylesheet" type="text/css" href="<%=Request.ApplicationPath+"/Css/Layout.css" %>" /> 

奇怪的是,從站點地圖中類似路徑生成的導航鏈接正常工作。當它從站點地圖生成路徑並且不嘗試構建相對路徑時,它可能會更好地理解整個hierchy。

+0

這似乎很奇怪 - 根本聽不懂! – 2009-07-28 22:27:11

2

嘗試使用相對於Web根目錄的路徑包含樣式表。在ASP .NET webforms中執行此操作的簡單方法是在服務器端控件上使用〜例如。

<link rel="Stylesheet" type="text/css" href="~/Css/MyCssFile.css" runat="server" /> 

然後,ASP.NET應該爲您解析正確的URL,而不管URL是什麼。

+0

對不起,我張貼我的CSS鏈接不正確,它消失。我正在使用「〜」,但不幸的是它沒有解決問題。 – 2009-07-28 16:13:51