Не видя ваш код, я не могу точно сказать, что идет не так, но после просмотра источника для RazorViewEngine
я думаю, что может иметь представление о том, что вы не делаете.
Вот как выглядит метод CreateView
:
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
var view = new RazorView(controllerContext, viewPath,
layoutPath: masterPath, runViewStartPages: true, viewStartFileExtensions: FileExtensions, viewPageActivator: ViewPageActivator)
{
DisplayModeProvider = DisplayModeProvider
};
return view;
}
Вы можете видеть, что они передают значение true
в качестве аргумента runViewStartPages
в конструкторе RazorView
.Анализ источника метода RenderView
в классе RazorView
показывает, что этот логический параметр используется для создания StartPageLookupDelegate
, который отвечает за поиск файла _ViewStart
и его компиляцию виерархия выполнения.
WebPageRenderingBase startPage = null;
if (RunViewStartPages)
{
startPage = StartPageLookup(webViewPage, RazorViewEngine.ViewStartFileName, ViewStartFileExtensions);
}
webViewPage.ExecutePageHierarchy(new WebPageContext(context: viewContext.HttpContext, page: null, model: null), writer, startPage);
Таким образом, это означает, что вы, вероятно, делаете одну из двух вещей:
- Переопределение
CreateView
метода RazorViewEngine
и не инициализация RazorView
указанным выше способом. - Переопределение метода
RenderView
RazorView
без создания StartPageLookupDelegate
и передача его в метод ExecutePageHierarchy
.
Надеемсяэто поможет вам найти правильный путь к поиску решения!