это не работает в областях. Он указывает на корень и игнорирует тот факт, что он был инициирован в области.
ел этот вопросНевозможно использовать относительные пути с областями в ASP.NET MVC 2 это та же проблема, что и у меня. Это все еще так в MVC3?
Есть ли способ сохранить файлы содержимого в области относительно этой области?
Так что файл макета в области может иметь что-то вроде
Без необходимости делать полностью квалифицированную ссылку, требуя каталог областей и имя области или решение вышеуказанного вопроса, который требует проверки для каждой области в каждом запросе.
обновление / редактирование
Я решил использовать как решение в приведенном выше вопросе, так и приведенное ниже (html helper) - в зависимости от проекта / ситуации. Моя реализация вышеупомянутого использует 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 + "/"));
}
}
}