我如何在一个区域使用一个普通的_ViewStart?

在我的“根”视图文件夹,我有一个_ViewStart与下面的代码:

@Code Layout = "~/Views/Shared/_Layout.vbhtml" End COde 

在我的Area / Public / Views文件夹中,我从根Views文件夹获得了_ViewStart的副本。

但是当我运行代码时,我得到这个错误:

 Unable to cast object of type 'ASP._ViewStart_vbhtml' to type 'System.Web.WebPages.StartPage'. 

我不知道我做错了什么?

我也可以为我的地区使用一个_ViewStart.vbhtml吗?

如何在区域中使用_ViewStart.vbhtml

您需要将~\Views\Web.config文件(或至less以下configuration元素)复制到您的区域的视图Web.Config中:

 <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.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=3.0.0.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.Routing" /> </namespaces> </pages> </system.web.webPages.razor> 

当我遇到这个问题时,我首先遇到了这个答案,但是我真正想要的是http://stevescodingblog.co.uk/asp-net-mvc-3rc-areas-viewstart/

问题的要点是_ViewStart。** html有一个范围。 它将适用于任何在同一级别或子文件夹下的视图。 因此,如果将其移动到基本目录(例如Global.asax文件旁边),它将应用〜/ Views / *下的所有视图 〜/ Areas / * / Views / *下的所有视图。

与接受的答案类似,您仍然需要复制<system.web.webPages.razor><sectionGroup name="system.web.webPages.razor"..>部分。 将它们放在您的基本web.config文件中(在项目的根目录中)。

这是一个更完整的教程 。

对于奖励积分,您可以通过创build一个更接近相关视图的新文件来覆盖_ViewStart。** html设置(例如文件〜/ Views / _ViewStart.cshtml将覆盖〜/ _ViewStart.cshtml中的所有视图〜/视图/目录)。

我发现将_ViewStart移动到根目录并将system.web.webPages.razor部分添加到根webconfiguration工作,但是我还需要添加一些类似于这样的行<< add namespace =“Ico.Logics.Web .Areas.Admin.Models“/ >>复制到该部分。