_ViewStart не используется после Custom ViewEngine

Кто-нибудь знает, есть ли причина, по которой _ViewStart.cshtml не будет обнаружен с помощью Custom ViewEngine в MVC 3?

Мои просмотры теперь живут по адресу

~\UI\Виды\

~\UI\Видс\Общие\

с ViewStart в ~\UI\Views_ViewStart.cshtml.

Я очистил существующий RazorViewEngine и заменил его своим в global.asax, и все представления разрешаются правильно, за исключением того, что ни одна из страниц макета не применяется, если я не укажу ее отдельно в каждом представлении.

Мой код формата пути двигателя:

        this.ViewLocationFormats = new[]
                                       {
                                           "~/UI/Views/{1}/{0}.cshtml", 
                                           "~/UI/Views/Shared/{0}.cshtml"
                                       };

        this.PartialViewLocationFormats = new[]
                                              {
                                                  "~/UI/Views/Shared/{0}.cshtml", 
                                                  "~/UI/Views/Shared/Partial/{0}.cshtml", 
                                                  "~/UI/Views/{1}/Partial/{0}.cshtml"
                                              };

        this.AreaMasterLocationFormats = new[] 
                                            { 
                                                "~/UI/Views/Admin/Shared/{0}.cshtml" 
                                            };

        this.AreaPartialViewLocationFormats = new[]
                                                  {
                                                      "~/UI/Views/Admin/Shared/{0}.cshtml", 
                                                      "~/UI/Views/Admin/Shared/Partial/{0}.cshtml"
                                                  };

        this.AreaViewLocationFormats = new[] { "~/UI/Views/Admin/{1}/{0}.cshtml" };

    this.MasterLocationFormats = new[]
    {
         "~/UI/Views/{1}/{0}.cshtml",
         "~/UI/Views/Shared/{0}.cshtml"
    };

Заранее спасибо, Скотт


person Scott    schedule 18.02.2013    source источник
comment
Эти взгляды в их собственной области?   -  person Travis J    schedule 18.02.2013
comment
Есть базовые представления, а затем я настраиваю образец административной области, которую я зарегистрировал. Я попытался убрать Район, чтобы посмотреть, исправит ли он это, но, похоже, это не так. _ViewStart.cshtml не работает ни для одного из представлений.   -  person Scott    schedule 19.02.2013
comment
Естественно, оказалось просто явным недосмотром... упс! Я дал ответ ниже на мою проблему.   -  person Scott    schedule 20.02.2013
comment
@ Скотт, я столкнулся с той же проблемой, и приведенный ниже принятый ответ мне не помогает. Любые идеи?   -  person Parashuram    schedule 10.08.2018


Ответы (1)


На этот раз глупость победила, к сожалению. Я создал свой пользовательский ViewEngine на основе кода, на который ссылался в статье. В статье они подробно описали переопределение для CreateView. У него был один из логических параметров (runViewStartPages), установленный в false, но поскольку это не был именованный аргумент, я пропустил его.

public class XyzViewEngine : RazorViewEngine
{    
    protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
    {
        return new RazorView(
            controllerContext,
            viewPath,
            masterPath,
            true, //<--- this drives whether to use _ViewStart pages.  It was set to false
            FileExtensions,
            ViewPageActivator
        );
    }
}
person Scott    schedule 19.02.2013