C# 如何在没有控制器的Razor页面中找到wwwroot的物理路径?

C# 如何在没有控制器的Razor页面中找到wwwroot的物理路径?,c#,asp.net-core-2.0,server.mappath,razor-pages,wwwroot,C#,Asp.net Core 2.0,Server.mappath,Razor Pages,Wwwroot,我需要在列表中列出一个文件列表,这过去很容易。。但不是在Asp.NETCore2Razor页面上。我找不到一种方法来获得“诗”的物理路径,它在“wwwroot”中。 我发现很多例子都使用IHostingEnvironment,但都是在控制器中。 但我没有控制器,也不需要控制器,只有页面和代码 哦,我多么想念网络表单 没有控制器的剃须刀页面的解决方案是什么 提前感谢。您可以在Razor页面中使用与在控制器中相同的方法进行设置 using System; using System.Collectio

我需要在列表中列出一个文件列表,这过去很容易。。但不是在Asp.NETCore2Razor页面上。我找不到一种方法来获得“诗”的物理路径,它在“wwwroot”中。 我发现很多例子都使用
IHostingEnvironment
,但都是在控制器中。 但我没有控制器,也不需要控制器,只有页面和代码

哦,我多么想念网络表单

没有控制器的剃须刀页面的解决方案是什么


提前感谢。

您可以在Razor页面中使用与在控制器中相同的方法进行设置

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Viber.Pages
{
    public class TestModel : PageModel
    {
        private Microsoft.AspNetCore.Hosting.IHostingEnvironment _env;
        public TestModel(Microsoft.AspNetCore.Hosting.IHostingEnvironment env)
        {
            _env = env;
        }

        public void OnGet()
        {
            // use the _env here
        }
    }
}

您可以使用PageModel的承包商注入IHostingEnvironment。

您可以使用IWebHostEnvironment类。代码块如下所示:

private readonly IWebHostEnvironment _webHostEnvironment;

        public HomeController(
            IWebHostEnvironment webHostEnvironment)
        {
            _webHostEnvironment = webHostEnvironment;
        }

public IActionResult Index()
        {
            string rootPath = _webHostEnvironment.WebRootPath
            return View();
        }     

我会在每一页上都这样做,还是会有更多的。。。“gloal”方式?您必须在所有页面中执行此操作。非常感谢!:)我需要创建一个TestModel,如下所示:newtestmodel()。调用中的ViewComponent时,此TestModel实例将传递给InvokeAsync,但我没有参数“env”的值。您从未调用
new TestModel
,该模型由系统实例化,并注入
IHostingEnvironment env
。查看
依赖注入
主题。不确定它是否满足您的需求:顺便问一下,您能更好地描述一下您正在使用的功能吗?有时,新技术提供了其他方式来实现您需要的不同方式(通常比以前的技术版本更容易)。更多细节将帮助我们提出最佳解决方案。