【问题标题】:How can I find the physical path of wwwroot, in a Razor page without a controller?如何在没有控制器的 Razor 页面中找到 wwwroot 的物理路径?
【发布时间】:2018-06-20 14:54:36
【问题描述】:

我需要在列表中创建一个文件列表,这在过去很容易......但在 Asp.Net Core 2 Razor 页面上却不是。我找不到一种方法来获取“wwwroot”内的“诗歌”的物理路径。 我发现了很多使用IHostingEnvironment 的例子,但总是在控制器中。 但是我没有控制器,不需要,只有页面和后面的代码..

哦,我多么想念 WebForms!

没有控制器的 Razor 页面的解决方案是什么?

提前致谢。

【问题讨论】:

  • 不确定它是否满足您的需求:docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files 顺便问一下,您能否更好地描述一下您正在开发的功能是什么?有时新技术会提供其他方式来实现您需要的不同方式(通常比以前的技术版本更容易)。更多细节将帮助我们提出最佳解决方案。

标签: c# asp.net-core-2.0 server.mappath razor-pages wwwroot


【解决方案1】:

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

private readonly IWebHostEnvironment _webHostEnvironment;

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

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

【讨论】:

    【解决方案2】:

    您可以像在控制器中一样在 Razor Page 中创建它。

    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。

    【讨论】:

    • 我是否必须在每一页上都这样做,还是有更多...“全球性”的方式?
    • 您必须在所有页面中执行此操作。
    • 非常感谢! :)
    • 我需要创建一个TestModel,像这样:new TestModel()。当调用 ViewComponent 时,此 TestModel 实例被传递给 InvokeAsync,但我没有参数“env”的值。
    • 你从不调用new TestModel,模型被系统实例化,IHostingEnvironment env被注入。查看Dependency injection 主题。
    猜你喜欢
    • 2020-02-29
    • 2020-10-22
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2020-02-21
    • 2019-09-21
    • 2015-04-21
    相关资源
    最近更新 更多