是否可以截取應用程序中使用的所有和任何相對路徑,並在評估絕對路徑之前刪除/編輯它的一部分?攔截所有相關路徑
實施例:
在MVC視圖PAGE-
<%= Html.Image("~/{somefolder}/logo.png") %>
我想和一個文件夾來攔截的相對路徑 「〜/ {somefolder} /logo.png」 和替換 「{} somefolder」通過某些邏輯(數據庫,if/else等)檢索到的位置
是否可以截取應用程序中使用的所有和任何相對路徑,並在評估絕對路徑之前刪除/編輯它的一部分?攔截所有相關路徑
實施例:
在MVC視圖PAGE-
<%= Html.Image("~/{somefolder}/logo.png") %>
我想和一個文件夾來攔截的相對路徑 「〜/ {somefolder} /logo.png」 和替換 「{} somefolder」通過某些邏輯(數據庫,if/else等)檢索到的位置
您可以創建一個幫助程序來完成此操作。
例如...
public static string LinkedImage(this HtmlHelper html, string url)
{
Regex regex = new Regex("({(.*?)})");//This is off the top of my head regex which will get strings between the curly brackets/chicken lips/whatever! :).
var matches = regex.Matches(url);
foreach (var match in matches)
{
//Go get your value from the db or elsewhere
string newValueFromElsewhere = GetMyValue(match);
url = url.Replace(string.Format("{{0}}", match), newValueFromElsewhere);
}
return html.Image(url);
}
在尋找解決URL本身而言,你可能想看看here在斯蒂芬·瓦爾特的博客。
我希望能夠在任何相對的「〜/」路徑URL中替換{somefolder}。 從你鏈接的文章中,如果我能以某種方式重寫VirtualPathUtility類(假設所有事情都經過了這個),我可以輕鬆地做到這一點。我會再看看它。 – Omar 2009-09-26 01:33:41
你想在哪一點做這個攔截?顯示鏈接到這些資產的頁面時?或者當請求進入Web服務器? – 2009-09-20 14:07:58
在頁面完全輸出給訪問者之前,任何url中的「{somefolder}」的任何和所有實例都將被我想要的東西替換。我認爲這將需要完成時,相對url解析爲絕對的,服務器端,但我不知道。 – Omar 2009-09-21 01:18:08