我發現此問題Can't use relative paths with areas in ASP.NET MVC 2這是我遇到的同一問題。這在MVC3中仍然如此嗎?MVC3區域中的相對內容路徑
有沒有辦法將內容文件保存在相對於該區域的區域中?
因此,在一個區域佈局文件可以有類似
而不必要麼做一個完全合格的鏈接,要求區目錄和地區名稱或對上述問題的解決方案需要檢查每個請求上的每個區域。
更新/編輯
我決定同時使用在上述問題的解決方案和下面的一個(HTML輔助) - 根據項目/情況。我的上述實現使用app.setting來存儲區域名稱和擴展名,以便我可以將模塊作爲我的庫的一部分。
var context = HttpContext.Current;
var path = context.Request.Path;
var list = ... //code that gets from app.config and then saves it
var extensions = ... // to the cache as non-removable with a dependency on web.config
foreach (var area in list)
{
if (!path.Contains(area + "/")) continue;
foreach (var extension in extensions)
{
if (path.EndsWith("." + extension))
{
context.RewritePath(path.Replace(area + "/", "Areas/" + area + "/"));
}
}
}
我喜歡這個解決方案。不過,我想知道速度如何:檢查模塊中的路徑或字典查找,然後檢查。即使如此,這可以通過各種技巧進行優化。 – 2011-02-28 14:34:30
另一個好處是,上述問題中提供的解決方案不允許參考該區域以外的資產,因爲它總是會嘗試重新映射到可能不需要的區域。 – 2011-02-28 15:42:45