Bry*_*ger 2 asp.net-mvc razor asp.net-core-mvc
我正在尝试将布局页面转换为.net core 2.0。不幸的是,在razor Server.MapPath中不再可用。
我正在尝试在.cshtml页面中找到对应的
<div style="height: 0px; width: 0px; position: absolute; visibility: hidden;">
@Html.Raw(System.IO.File.ReadAllText(Server.MapPath("~/Content/images/svg-defs.svg")))
</div>
Run Code Online (Sandbox Code Playgroud)
在ASP.NET Core中,您可以使用该IHostingEnvironment
服务来访问Web应用程序的某些路径。
此对象有两个有趣的属性:
ContentRootPath
:应用程序基本路径的路径(通常可以在其中找到appsettings.json,Program.cs等WebRootPath
:/ wwwroot目录的路径,这就是您要查找的目录。要访问该IHostingEnvironment
服务,只需将其注入到控制器的构造函数中,然后使用字段将其保留即可。
public class HomeController : Controller
{
private IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)
{
_env = env;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在此Controller的操作方法中,您现在可以使用System.IO.Path.Combine
和WebRootPath
属性构造文件的物理路径。
public IActionResult Index()
{
ViewBag.FilePath = Path.Combine(_env.WebRootPath, @"Content\images\svg-defs.svg");
return View();
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,我将结果路径添加到,ViewBag
以轻松地在Index视图中显示它:
<h2>Index View</h2>
<p>Filepath: @ViewBag.FilePath</p>
Run Code Online (Sandbox Code Playgroud)
这将沿着 C:\MySite\wwwroot\Content\images\svg-defs.svg
在 .net Core 中,您可以使用 IHostingEnvironment 服务获取根路径。您可以使用 HttpContext 在视图中获取此服务。
@{
var service = Context.RequestServices.GetService(typeof(Microsoft.AspNetCore.Hosting.IHostingEnvironment)) as Microsoft.AspNetCore.Hosting.IHostingEnvironment;
}
<span>Environment: @service.EnvironmentName</span>
<span>WebRootPath: @service.WebRootPath</span>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1942 次 |
最近记录: |