使用 RazorGenerator 预编译视图的基础 class
Base class for view with RazorGenerator precompiled views
我有一个控制台项目,其中一些 .cshtml
文件存储在 Resources
文件夹中,这些文件内置于带有 Razorgenerator.MsBuild
nuget 包的 .cs
文件中。
我需要为生成的视图替换 WebViewPage
视图基础 class,但是添加带有 pageBaseType="ConsoleApp.MyViewBase"
选项集的 web.config 文件或以不同方式更改文件位置确实如此对我没有帮助,也没有找到任何其他方法。
视图 class 始终生成为:
public partial class _Resources_Index_cshtml :
System.Web.Mvc.WebViewPage<ConsoleApp.ModelClass> { ... }
希望,有一些方法可以为所有视图全局配置 class,而无需在每个 .cshtml
文件的开头添加指令。
如果有人觉得它有帮助,我有一个 nuget package。它与 Razorgenerator.MsBuild 相同,但将 System.Web.Mvc.WebViewPage
替换为 Custom.System.Web.Mvc.WebViewPage
。因此,如果您想使用自定义 WebViewPage,请安装包并在命名空间 Custom.System.Web.Mvc 中添加名为 class 的 WebViewPage。喜欢:
namespace Custom.System.Web.Mvc
{
public abstract class WebViewPage<T>
{
...
}
}
看来 web.config
中的设置基础视图适用于最新的 RazorGenerator。
所以更新你的 RazorGenerator 包并尝试在 web.config
中有这样的东西:
<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="WebApplication2.Views.BaseView2">
<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" />
</namespaces>
</pages>
</system.web.webPages.razor>
在我的例子中,我将预编译(使用 RazorGenerator.Mvc 和 RazorGenerator.MsBuild 包)添加到旧项目,但没有成功。问题是我的 configSections
项目中有 Version=2.0.0.0
,必须将其更改为 Version=3.0.0.0
。
我有一个控制台项目,其中一些 .cshtml
文件存储在 Resources
文件夹中,这些文件内置于带有 Razorgenerator.MsBuild
nuget 包的 .cs
文件中。
我需要为生成的视图替换 WebViewPage
视图基础 class,但是添加带有 pageBaseType="ConsoleApp.MyViewBase"
选项集的 web.config 文件或以不同方式更改文件位置确实如此对我没有帮助,也没有找到任何其他方法。
视图 class 始终生成为:
public partial class _Resources_Index_cshtml :
System.Web.Mvc.WebViewPage<ConsoleApp.ModelClass> { ... }
希望,有一些方法可以为所有视图全局配置 class,而无需在每个 .cshtml
文件的开头添加指令。
如果有人觉得它有帮助,我有一个 nuget package。它与 Razorgenerator.MsBuild 相同,但将 System.Web.Mvc.WebViewPage
替换为 Custom.System.Web.Mvc.WebViewPage
。因此,如果您想使用自定义 WebViewPage,请安装包并在命名空间 Custom.System.Web.Mvc 中添加名为 class 的 WebViewPage。喜欢:
namespace Custom.System.Web.Mvc
{
public abstract class WebViewPage<T>
{
...
}
}
看来 web.config
中的设置基础视图适用于最新的 RazorGenerator。
所以更新你的 RazorGenerator 包并尝试在 web.config
中有这样的东西:
<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="WebApplication2.Views.BaseView2">
<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" />
</namespaces>
</pages>
</system.web.webPages.razor>
在我的例子中,我将预编译(使用 RazorGenerator.Mvc 和 RazorGenerator.MsBuild 包)添加到旧项目,但没有成功。问题是我的 configSections
项目中有 Version=2.0.0.0
,必须将其更改为 Version=3.0.0.0
。