Я переношу некоторые из моих старых проектов в .NET CORE 3.0, и я хотел бы знать, как правильно преобразовать Virtual Path --> Absolute Path
в методе, отвечающем за создание пользовательского элемента управления бритвой. У меня есть некоторые идеи, но они кажутся немного глупыми. Существуют также решения с IHostingEnvironment
и с IPathProvider
, но они требуют передачи аргументов непосредственно в контроллеры или определения вещей, выходящих за рамки реальной библиотеки, поэтому они не являются тем, что я ищу.
Давайте возьмемэтот простой пример для ясности (обратите внимание, что VirtualPathUtility
не существует в .NET CORE, и на сборку нельзя ссылаться). Я хочу знать, есть ли прямой способ сделать то же самое, написанное здесь для ASP.NET MVC 5:
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
namespace CommonLib.Source.Common.CustomMVCRenderers
{
public static class ImageRenderer
{
public static IHtmlContent Image(this HtmlHelper html, string src, string alt)
{
var img = new TagBuilder("img");
img.Attributes.Add("src", VirtualPathUtility.ToAbsolute(src));
img.Attributes.Add("alt", alt);
return img;
}
}
}
// РЕДАКТИРОВАТЬ
Лучший способ, которым я могу думать в настоящее времяэто с использованием html.ViewContext.HttpContext.Request.PathBase
.