C# 如何在没有控制器的Razor页面中找到wwwroot的物理路径?
我需要在列表中列出一个文件列表,这过去很容易。。但不是在Asp.NETCore2Razor页面上。我找不到一种方法来获得“诗”的物理路径,它在“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
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
。查看依赖注入主题。不确定它是否满足您的需求:顺便问一下,您能更好地描述一下您正在使用的功能吗?有时,新技术提供了其他方式来实现您需要的不同方式(通常比以前的技术版本更容易)。更多细节将帮助我们提出最佳解决方案。