我的控制台项目包含一些存储在.cshtml
文件夹中的Resources
文件,该文件内置于.cs
文件中,内容为Razorgenerator.MsBuild
nuget包。
我需要为生成的视图替换WebViewPage
视图基类,但添加带有pageBaseType="ConsoleApp.MyViewBase"
选项的web.config文件或以不同方式更改文件的位置对我没有帮助,也没有任何其他方法在哪里找到。
视图类始终生成为:
public partial class _Resources_Index_cshtml :
System.Web.Mvc.WebViewPage<ConsoleApp.ModelClass> { ... }
希望有一些方法可以为所有视图全局配置类,而不必在每个.cshtml
文件的开头添加指令。
答案 0 :(得分:1)
看来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包)添加到旧项目中,但它没有工作。问题是我的Version=2.0.0.0
项目中有configSections
,必须将其更改为Version=3.0.0.0
。
答案 1 :(得分:0)
如果有人发现它有用,我可以使用nuget package。它与Razorgenerator.MsBuild相同,但System.Web.Mvc.WebViewPage
替换为Custom.System.Web.Mvc.WebViewPage
。因此,如果要使用自定义WebViewPage,请安装该包并在名称空间Custom.System.Web.Mvc中添加名为WebViewPage的类。像:
namespace Custom.System.Web.Mvc
{
public abstract class WebViewPage<T>
{
...
}
}