1

我有控制台项目,其中一些.cshtml文件存储在Resources文件夹中,这些文件内置在.cs带有Razorgenerator.MsBuildnuget 包的文件中。

我需要WebViewPage为生成的视图替换视图基类,但是添加带有pageBaseType="ConsoleApp.MyViewBase"选项集的 web.config 文件或以不同的方式更改文件的位置对我没有帮助,也找不到任何其他方式。

视图类总是生成为:

public partial class _Resources_Index_cshtml : 
         System.Web.Mvc.WebViewPage<ConsoleApp.ModelClass> { ... }

希望有某种方法可以为所有视图全局配置类,而无需在每个.cshtml文件的开头添加指令。

4

2 回答 2

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.

于 2015-12-07T09:23:52.227 回答
0

如果有人觉得它有帮助,我有一个nuget 包。它与 Razorgenerator.MsBuild 相同,但替换System.Web.Mvc.WebViewPageCustom.System.Web.Mvc.WebViewPage. 因此,如果您想使用自定义 WebViewPage,请安装包并在命名空间 Custom.System.Web.Mvc 中添加名为 WebViewPage 的类。喜欢:

namespace Custom.System.Web.Mvc
{
    public abstract class WebViewPage<T>
    {
    ...
    }
}
于 2015-07-09T12:49:36.977 回答