首页 > 解决方案 > 将强类型 Razor 视图与在运行时加载的视图模型一起使用

问题描述

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

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

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

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

如何让 Razor 引擎知道动态加载的程序集,以便我可以使用强类型视图?似乎使用自定义RazorBuildProvider 会起作用,但是有更好的方法吗?

标签: .netrazor.net-coreasp.net-core-mvcasp.net-core-2.0

解决方案


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

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

推荐阅读