如何从外部应用程序使用视图

时间:2018-07-11 11:16:30

标签: c# asp.net-core

我有一个用.net core 2.1编写的Web应用程序(Firstapplication),并且运行良好。
现在,我想从另一个应用程序创建的dll文件中添加运行时视图。 我想取“ SeconApplication.web.Views.dll”并将其放在我的Fyrstapplication的文件夹中,然后调用名为Index的视图,它不是从我的FirsApplication中获取,而是从我放在某个文件夹中的Dll文件中获取。 >

关于该操作的任何想法或您可以推荐的任何文章?

var moduleViewLocations = new string[]
{
   "/dropfolder/SeconApplication.Web.Views/Views/{1}/{0}.cshtml",
};

1 个答案:

答案 0 :(得分:0)

解决了核心2.1

经过多次尝试和错误,我找到了一种使用另一种解决方案中的预编译视图的方法。

在starup.cs中,您首先需要加载包含您从其他解决方案获得的视图的DLL,然后只需在剃刀视图引擎中将assebly注册为EmbeddedFileProvider。

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        //load the assembly from the view dll you have
        Assembly assempbly2 = AssemblyLoadContext.Default.LoadFromAssemblyPath("C:/the/path/to/your/solution.Views.dll");

        //register the views in razor view engine 
        services.Configure<RazorViewEngineOptions>(options =>
        {
            options.FileProviders.Add(new EmbeddedFileProvider(assempbly2));
        });

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    }