我尝试将我的Views默认目录移到另一条路径上。
我已经更改了我的Global.asax,在我的视图引擎中添加目录
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" }
});
}
这是我新文件夹配置的图片
我读到的每个地方都看到我需要在我的Views根文件夹中添加一个web配置。所以我把模板视图中的一个放入我的新文件夹配置中。
这是我的/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>
无论我总是看到这个错误:
'〜/ Mvc / Views / Login / Index.cshtml'中的视图必须来自ViewPage,ViewPage&lt; TModel&gt;,ViewUserControl或ViewUserControl&lt; TModel&gt;。
描述:Une例外非géréess'estproduite au moment de l'exécutiondelarequêteWebactuelle。 Contrôlezlatrace de la pile pour plus d'informations sur l'erreur et son origine dans le code。
Détailsdel'exception:System.InvalidOperationException:'〜/ Mvc / Views / Login / Index.cshtml'中的视图必须从ViewPage,ViewPage&lt; TModel&gt;,ViewUserControl或ViewUserControl&lt; TModel&gt;派生。
答案 0 :(得分:0)
我找到了我的解决方案,问题出在我的RegisterViewEngine函数中。
我使用类WebFormViewEngine,假设用于文件.ascx。对于Razor视图,您可以使用Class RazorViewEngine
所以我只需改变我的功能:
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" } }); }
现在它完美无缺!