Самый простой способ изменить путь Views для определенного контроллера - PullRequest
1 голос
/ 20 июня 2011

У меня есть контроллер с именем BaseController, и Controller1 и Controller2 наследуются от него.

Все представления для этих контроллеров находятся в ~ / Views / Base /, причина в том, что Controller1 и 2 выполняют одно и то же, но имеют собственные атрибуты для определенных вещей в некоторых переопределенных действиях.

Я хочу иметь возможность указать ~ / Views / Base в качестве местоположения для поиска представлений в Controller1 и Controller2. Теперь я могу сделать это без необходимости реализовывать свой собственный ViewLocator согласно решению Дейла в этом посте Представления в отдельных сборках в ASP.NET MVC

Я бы предпочел не выбрасывать все эти представления в ~ / Views / Shared, поскольку они на самом деле не являются общими, кроме как между этими двумя контроллерами.

1 Ответ

2 голосов
/ 20 июня 2011

Вы можете написать собственный механизм просмотра для добавления этого нового местоположения в список поиска:

public class MyViewEngine : RazorViewEngine // WebFormViewEngine - if you are using WebForms
{
    public MyViewEngine()
    {
        ViewLocationFormats = base.ViewLocationFormats.Union(new[] 
        {
            "~/Views/Base/{0}.cshtml",
            "~/Views/Base/{0}.vbhtml",
            "~/Views/Base/{0}.aspx",
            "~/Views/Base/{0}.ascx",
        }).ToArray();
    }
}

, которое будет зарегистрировано в Application_Start:

ViewEngines.Engines.Add(new MyViewEngine());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...