Я нашел этот вопрос Нельзя использовать относительные пути с областями в 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 + "/"));
}
}
}