【问题标题】:Using strongly typed Razor views with view models loaded at runtime将强类型 Razor 视图与在运行时加载的视图模型一起使用
【发布时间】:2019-06-02 03:28:32
【问题描述】:

我希望能够在运行时加载模型和控制器的强类型 Razor 视图。程序集在应用程序启动期间通过IApplicationFeatureProviderConfigureServices 中加载。

        services.AddMvc()
           .ConfigureApplicationPartManager(apm => apm.FeatureProviders.Add(new DynamicControllerFeatureProvider()));

模型类型为 dynamic 的视图可以正常编译,但任何强类型的 Razor 视图都无法编译。

类型或命名空间名称“TestModules”不存在于 命名空间“TestProject”(您是否缺少程序集引用?)

如何让 Razor 引擎了解动态加载的程序集,以便我可以使用强类型视图?好像使用自定义的RazorBuildProviderwould work,但有没有更好的方法?

【问题讨论】:

    标签: .net razor .net-core asp.net-core-mvc asp.net-core-2.0


    【解决方案1】:

    默认情况下预编译 Razor 视图。由于必要的程序集直到运行时才可用,因此不可能进行预编译。您需要在您的 csproj 中使用以下内容将其关闭:

    <PropertyGroup>
        <RazorCompileOnBuild>false</RazorCompileOnBuild>
        <RazorCompileOnPublish>false</RazorCompileOnPublish>
    </PropertyGroup>
    

    【讨论】:

    • 那是有道理的,但我什至不确定我的项目是否首先设置为预编译。它编译得很好,并且仅在尝试渲染视图时才发生错误。在显式禁用这些属性后,它仍然只使用项目中引用的程序集,而不是动态加载的程序集。它能为您提供帮助吗?我收到与上述相同的错误消息。
    猜你喜欢
    • 2016-07-30
    • 2020-06-27
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2016-07-18
    相关资源
    最近更新 更多