我在非MVC环境中使用Razor引擎(razorengine.codeplex.com)。我编译存储在文件中的模板,并将@inherits用于智能感知支持。

  • RazorEngine组件
  • 自定义程序集-引用RazorEngine,包含View<>并将View<>设置为基类
  • Web应用程序-引用RazorEngine,自定义程序集,包含.cshtml模板文件

  • 所有cshtml文件均具有以下@inherits指令:
    @inherits View<SomeModel>
    

    引发错误:



    我的web.config包含以下条目:
    <add namespace="CustomAssembly.NamespaceContainingViewClass" />
    

    我认为这与其他条目<assemblies>有关,其中未提及我的CustomAssembly。是这样吗我可以使用包含在另一个程序集中的自定义基类进行编译吗?

    p.s.我无法检索该程序集的强名称,因为我的自定义程序集引用的3d派对程序集也没有被强命名。

    堆栈跟踪:
    at RazorEngine.Compilation.DirectCompilerServiceBase.CompileType(TypeContext context)
    at RazorEngine.Templating.TemplateService.CreateTemplate(String template, Type modelType)
    at RazorEngine.Templating.TemplateService.GetTemplate(String template, Type modelType, String name)
    at RazorEngine.Templating.TemplateService.Compile(String template, Type modelType, String name)
    at RazorEngine.Razor.Compile(String template, Type modelType, String name)
    

    最佳答案

    您可能需要将razor config部分添加到web.config中:

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
        <configSections>
            <section name="razorEngine" type="RazorEngine.Configuration.RazorEngineConfigurationSection, RazorEngine" requirePermission="false" />
        </configSections>
    </configuration>
    
    <razorEngine>
        <namespaces>
            <add namespace="CustomAssembly.NamespaceContainingViewClass" />
        </namespaces>
    </razorEngine>
    

    关于.net - RazorEngine-命名空间导入编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6016999/

    10-11 17:25