Динамический RazorViewEngine для связанных контроллеров, выделенных для частичных
Я работаю над тем, что должно быть второстепенным расширением RazorViewEngine, но у меня возникли сложности со второй частью моего подхода.
В основном у меня есть некоторые контроллеры, которые предназначены для некоторых частичных представлений, и я хотел бы иметь возможность размещать их в подкаталогах. Конечно, размещение моделей и контроллеров в подкаталогах достаточно просто, но представления также должны совпадать. Вот где это становится сложно.
Ниже вы увидите мой движок, и мне не хватает как узнать имя главного контроллера. Кажется, возможно, я должен быть в состоянии продлить ControllerContext
каким-то образом?
в FileExists
override, вы можете видеть, что я жестко запрограммирован в значение для тестирования, и это очень хорошо работает. Но я не просто хочу администрации. Пример отношения контроллера - у меня есть контроллер администрирования, который загружает несколько партиалов, каждый со своим выделенным контроллером, например, User. Поэтому, когда я загружаю представления для пользователя, я бы хотел, чтобы Views/Administration/User
вместо Views/User
,
public class PartialsViewEngine : RazorViewEngine
{
private static string[] NewPartialViewFormats = new[] {
"~/Views/%1/{1}/{0}.cshtml",
"~/Views/{1}/Partials/{0}.cshtml",
"~/Views/Shared/Partials/{0}.cshtml"
};
public PartialsViewEngine()
{
base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();
}
protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
{
string firstController = '????. //Trying to figure how to get this
var path = partialPath.Replace("%1", firstcontroller);
return base.CreatePartialView(controllerContext, path));
}
protected override bool FileExists(ControllerContext controllerContext, string virtualPath)
{
var path = partialPath.Replace("%1", "Administration");
return base.FileExists(controllerContext, path);
}
}
Как бы я, с наименьшими накладными расходами для контроллеров, получить это значение?
--- Обновление 1 ---
Я заметил, что с этой конфигурацией resharper не распознает пути к файлам, даже если он выполняется.