Когда файл MasterPageFile находится в ASP.NET MVC WebForms ViewEngine
-
05-07-2019 - |
Вопрос
Когда свойство MasterPageFile представления / страницы проверяется на то, что оно существует в ASP.NET Механизм просмотра веб-форм MVC?
Что я хочу сделать, так это чтобы следующий код не выводил ошибку:
Сообщение об ошибке синтаксического анализатора:Файл '/SomePlaceThatDosentExist/Site.Master' не существует.
Определено как таковое в файле .aspx моего представления:
<%@ Page Language="C#" MasterPageFile="~/SomePlaceThatDosentExist/Site.Master" Inherits="System.Web.Mvc.ViewPage" >
Где мне нужно было бы написать какой-нибудь код, чтобы войти и определить допустимое свойство MasterPageFile?
Я попробовал следующее в моем пользовательском классе ViewPage, который наследуют мои представления
public override string MasterPageFile
{
get
{
return base.MasterPageFile;
}
set
{
base.MasterPageFile = "~/RealPlace/Site.Master";
}
}
и попробовал также следующее (в пользовательском классе страницы просмотра, который наследуют мои представления)
protected override void OnPreInit(EventArgs e)
{
base.MasterPageFile = "~/RealPlace/Site.Master";
base.OnPreInit(e);
}
В обоих случаях отображается ошибка, о которой я указал выше.
Из того, что я знаю, OnPreInit - это самая ранняя точка в жизненном цикле ViewPage, так можно ли перейти еще раньше в жизненном цикле?
Обратите внимание, прежде чем писать и отвечать:
- Я знаю о return View("ViewName", "MasterPageName");
- Я знаю о динамических главных страницах, но я хочу выполнить эту конкретную задачу
Решение
Вероятно, ваш лучший способ решить проблему - создать пользовательский Виртуальный поставщик путей
Другие советы
Если вы хотите изменить способ поиска главной страницы, вы можете реализовать свой собственный viewengine:
public CustomViewEngine()
{
MasterLocationFormats = new string[] {
"~/RealPlace/Site.Master""
};
}