Группируйте представления MVC3 в подпапках в основной папке 'action' - PullRequest
5 голосов
/ 27 июля 2011

например. У меня есть три контроллера платежей, каждый из которых предназначен для стороннего процессора платежей, поэтому в моей корневой папке Views у меня есть одна папка для каждого из этих контроллеров. Я хотел бы переместить их в Views \ Payments \ Processor1, Views \ Payments \ Processor2 и т. Д. Вместо текущих Views \ Processor1 и т. Д.

Я еще не готов реализовать области, поэтому я надеюсь, что есть какой-то способ, с помощью которого я могу сказать MVC, чтобы он также просматривал подпапки или что-то в этом роде. Можно ли это сделать и как?

Ответы [ 2 ]

11 голосов
/ 27 июля 2011

Вы можете написать собственный механизм просмотра и переопределить местоположения просмотра по умолчанию :

public class MyRazorViewEngine : RazorViewEngine
{
    public MyRazorViewEngine() : base()
    {
        base.ViewLocationFormats = base.ViewLocationFormats.Concat(new[] {
            "~/Views/Payments/{1}/{0}.cshtml",
            "~/Views/Payments/{1}/{0}.vbhtml"
        }).ToArray();

        base.PartialViewLocationFormats = base.PartialViewLocationFormats.Concat(new[] {
            "~/Views/Payments/{1}/{0}.cshtml",
            "~/Views/Payments/{1}/{0}.vbhtml"
        }).ToArray();
    }
}

и затем зарегистрировать его в Application_Start:

ViewEngines.Engines.Add(new MyRazorViewEngine());
2 голосов
/ 27 июля 2011

Нужны ли вам виды для поиска? Вы можете указать, какое представление использовать в вызове View (), с указанием пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...