c# - 在 Razor (chtml) 中渲染动态 View ,如何在 asp.net core 3.0 中将 FileProvider 添加到 razor?

标签 c# razor asp.net-core-3.0 fileprovider

我正在从 asp-net core 2.2 迁移到 asp-net core 3.0,我使用这个 block 来定义我的文件类提供程序,你知道这是用来创建动态 Razor View (动态 cshtml),我的问题是该段不起作用。

我已经实现了经典:

services.Configure<RazorViewEngineOptions>(opts =>
                opts.FileProviders.Add( 
                    new MyCostumizedFileProvider()
                )
            );

地点:

  1. MyCostumizedFileProvider:是File Provider的实现。

  2. RazorViewEngineOptions :是在 aspnet core 2.0 中使用的 Razor 运行时编译器的处理程序。

在 asp-net core 中我已经检查过

例如:

services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
    options.FileProviders.Clear();
    options.FileProviders.Add(new MyCostumizedFileProvider());
});

  services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
   options.FileProviders.Add(new MyCostumizedFileProvider());
  });

错误总是:

/Pages/Shared/ViewListPerson_1b2b2019-aad9-4096-a3b7-ece5dfe586c1.cshtml
   at Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable`1 originalLocations)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
   at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

你有线索,解决方案吗?或者你知道注入(inject) FileProviders 的其他方法吗?

最佳答案

对于 ASP.NET MVC Core 3,这是添加文件提供程序的方法:

services.AddControllersWithViews()
    .AddRazorRuntimeCompilation(options => options.FileProviders.Add(
        new PhysicalFileProvider(appDirectory)));

关于c# - 在 Razor (chtml) 中渲染动态 View ,如何在 asp.net core 3.0 中将 FileProvider 添加到 razor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289323/

相关文章:

c# - ZedGraph 自定义图表

c# - 使用企业架构的代码执行流程

c# - HTML 中 if block 内的 for 循环

c# - 将 C# 对象转换为 JSON 或 Javascript 对象

c# - 如何从表名指定为 SqlParameter 的表中进行选择?

c# - BookSleeve BlockingRemoveLeft 只返回一些插入列表的项目

c# - Asp MVC 下拉列表选定值未选定

c# - 在扩展中找不到 ASP.NET Core 3.0 get_HostingEnvironment() 方法

c# - 在 CosmosDB 中使用 CosmosClient 进行分页

c# - ASP.NET MVC Core API 将枚举序列化为字符串