В стремлении сохранить свои взгляды, организованное в рамках моего нового приложения MVC 5, я создал структуру папок следующим образом:Работы с подпапками в пользовательском виде двигателе
Views
|-- Account
| |-- Partials
| |-- EditUser.cshtml
| |-- ListUsers.cshtml
| |-- Home.cshtml
|
|-- Admin
|-- Partials
|-- AnotherPartialView.cshtml
Теперь я хотел бы для этого создайте настраиваемый механизм просмотра, поэтому мне не нужно указывать полный путь к папке Partials
в папках моего основного вида.
Я создал пользовательский вид двигателя, как это:
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
: base()
{
var viewLocations = new[] {
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/{1}/Partials/{0}.cshtml"
};
this.PartialViewLocationFormats = viewLocations;
this.ViewLocationFormats = viewLocations;
}
}
и зарегистрировал его в Application_Start()
в Global.asax
protected void Application_Start()
{
/* snip */
ViewEngines.Engines.Add(new CustomViewEngine());
}
Edit:
Я называю парциальное Просмотров:
[HttpGet]
/// http://localhost/Account/ListUsers
/// View is located in ~/Views/Account/Partials/ListUsers.cshtml
public ActionResult ListUsers()
{
/* populate model */
return PartialView("ListUsers.cshtml", Model);
}
Мое мышление состояло в том, что если я включаю параметр контроллера {1}
, за которым следует папка Partials
в локациях вида, это остановит меня в каждой папке Partials
в качестве местоположения. Это также означает, что я могу просто ссылаться на представление по имени, а не на его полный путь.
Однако, я все еще получаю сообщение об ошибке, что частичный вид не может быть найден ни в одном из поисковых местоположений.
Любая помощь будет оценена по достоинству.
Спасибо!
Можете ли вы показать пример того, как вы пытаетесь, чтобы сделать частичный вид? Потому что я скопировал ваш код в тестовом проекте и, похоже, работает отлично для меня. Также класс класса просмотра, который вы поделили здесь, называется «CustomViewEngine», но вы добавляете «IridiumViewEngine» в двигатели. Это ваш фактический код или просто ошибка при вставке? – TKharaishvili
@GwynBleidd Ой, да, 'IridiumViewEngine' был ошибкой во время копирования/вставки. Я обновил свой пост выше, когда возвращаются мои частичные представления. Благодаря! – Dave