Я пытаюсь реализовать пользовательский механизм просмотра с помощью Razor. Цель состоит в том, если представление находится в подпапке, чтобы использовать это представление.
У меня есть движок вида, полученный из RazorViewEngine
public class RazorViewFactory : RazorViewEngine
{
public RazorViewFactory()
{
string TenantID = ConfigurationManager.AppSettings["TenantID"];
if (TenantID != null)
{
MasterLocationFormats = new[] {
"~/Views/Shared/{0}.cshtml"
};
ViewLocationFormats = new[]{
"~/Tenant/" + TenantID + "/Views/{1}/{0}.cshtml",
"~/Tenant/" + TenantID + "/Views/Shared/{0}.cshtml",
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml"
};
PartialViewLocationFormats = new[] {
"~/Tenant/" + TenantID + "/Views/{1}/{0}.cshtml",
"~/Tenant/" + TenantID + "/Views/Shared/{0}.cshtml"
};
}
}
}
и в моем Global.asax
protected void Application_Start()
{
...
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewFactory());
}
Все работает, за исключением случаев, когда я загружаю домашнюю страницу своего вспомогательного представления Tenant, я получаю следующую ошибку.
The view at '~/Tenant/TenantB/Views/Home/Index.cshtml'
must derive from WebViewPage, or WebViewPage<TModel>.
Если я загружаю базовую домашнюю страницу, она отлично работает с движком Razor.