How do I get the Web Root Path and the Content Root Path in ASP.NET Core?
我试图在视图中添加根路径作为参数,所以我可以将它作为参数传递给PayPal按钮。
1 2 3 4 5 6 7 | <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top"> ... snip ... <input type="hidden" name="return" value="@Model.UrlRoot/Manage/[email protected]"> ... snip ... </form> |
我在筛选答案如何在ASP.NET MVC中获取webapp的基本URL?(20个答案)和ASP.NET MVC 6应用程序的虚拟应用程序根路径
由于ASP.NET核心非常不同,请求类不再包含.url属性,因此大多数答案都不起作用。
您可以这样将iHostingEnvironment注入控制器:
1 2 3 4 5 6 7 8 9 | public class HomeController : Controller { protected readonly IHostingEnvironment _hostingEnvironment; public HomeController(IHostingEnvironment hostingEnvironment) { } } |
在viewimports.cshtml中添加:
1 2 | @using Microsoft.AspNetCore.Hosting @inject IHostingEnvironment HostingEnvironment |
现在可以使用
使用.NET核心2.1,上下文将自动注入视图中。显示视图的请求的基本路径可以这样访问:
1 | @(Context.Request.PathBase) |
我遇到了马吕斯·舒尔茨的职位。(如果您是马吕斯,请添加您的答案,联系我,我将删除我的答案。)
https://blog.mariusschulz.com/2016/05/22/getting-the-web-root-path-and-the-content-root-path-in-asp-net-core
出于某种原因,我的控制器没有在构造函数中注入IHostingEnvironment,但它们具有请求对象。
在我的控制器里,我已经声明
1 | var urlRoot = $"{Request.Scheme}://{Request.Host}{Url.Content("~")}"; |
并将其传递给MyViewModel
1 2 | var model = new MyViewModel { UrlRoot = urlRoot }; return View(model); |
这考虑到了HTTP与HTTPS、端口号,如果网站不是以/为根的话,希望还包括网站根。由于我的站点位于/I无法确认url.content("~")获取站点根目录。