2016-07-25 14 views
0

Ich versuche, mein Views-Standardverzeichnis nach oben zu verschieben.MVC 5 ViewEngine Path Fehler ändern: (muss von ViewPage abgeleitet werden) selbst mit WebConfig in View Root

Ich habe meinen Global.asax hinzufügen, um das Verzeichnis in meiner Ansicht Motor wie diese

enter image description here

Jedes Dies ist das Bild meiner neuen Ordner Konfiguration

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 

     RegisterViewEngines(ViewEngines.Engines); 
    } 

    private static void RegisterViewEngines(ICollection<IViewEngine> engines) 
    { 
     engines.Add(new WebFormViewEngine 
     { 
      //MasterLocationFormats = new[] { "~/App/Views/Admin/{0}.master" }, 
      PartialViewLocationFormats = new[] { "~/Mvc/Views/Shared/{1}/{0}.cshtml" }, 
      ViewLocationFormats = new[] { "~/Mvc/Views/{1}/{0}.cshtml" } 
     }); 
    } 

geändert, wo ich gelesen Ich sehe, dass ich eine Web-Konfiguration zu meinem Views-Stammordner hinzufügen muss. Also nehme ich das eine kam in der Template-Ansicht und füge es in meine neue Ordner-Konfiguration ein.

Das ist mein /Mvc/Views/Web.Config

<configuration> 
 
    <configSections> 
 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
 
    </sectionGroup> 
 
    </configSections> 
 

 
    <system.web.webPages.razor> 
 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
 
     <namespaces> 
 
     <add namespace="System.Web.Mvc" /> 
 
     <add namespace="System.Web.Mvc.Ajax" /> 
 
     <add namespace="System.Web.Mvc.Html" /> 
 
     <add namespace="System.Web.Optimization"/> 
 
     <add namespace="System.Web.Routing" /> 
 
     <add namespace="Template" /> 
 
     </namespaces> 
 
    </pages> 
 
    </system.web.webPages.razor> 
 

 
    <appSettings> 
 
    <add key="webpages:Enabled" value="false" /> 
 
    </appSettings> 
 

 
    <system.webServer> 
 
    <handlers> 
 
     <remove name="BlockViewHandler"/> 
 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
 
    </handlers> 
 
    </system.webServer> 
 

 
    <system.web> 
 
    <compilation> 
 
     <assemblies> 
 
     <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
 
     </assemblies> 
 
    </compilation> 
 
    </system.web> 
 
</configuration>

Kein mater, was ich diesen Fehler sehen immer:

enter image description here Fehler Stack Trace

The view at '~/Mvc/Views/Login/Index.cshtml' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>.

Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.InvalidOperationException: The view at '~/Mvc/Views/Login/Index.cshtml' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>.

+0

Die Ansicht unter '~/Mvc/Views/Login/Index.cshtml' muss von ViewPage, ViewPage , ViewUserControl oder ViewUserControl abgeleitet werden. –

Antwort

0

Ich habe meine Lösung gefunden, das Problem lag in meiner RegisterViewEngine-Funktion.

Ich verwende die Klasse WebFormViewEngine, die für die Datei .ascx verwendet werden soll. für die Razor sehen Sie die Klasse RazorViewEngine verwenden

Also ich muss nur meine Funktion wie folgt ändern sind annehmen:

private static void RegisterViewEngines(ICollection<IViewEngine> engines) 
    { 
     engines.Add(new RazorViewEngine 
     { 
      //MasterLocationFormats = new[] { "~/App/Views/Admin/{0}.master" }, 
      PartialViewLocationFormats = new[] { "~/Mvc/Views/Shared/{1}/{0}.cshtml" }, 
      ViewLocationFormats = new[] { "~/Mvc/Views/{1}/{0}.cshtml" } 
     }); 
    } 

es perfekt Jetzt arbeiten!