ASP.NET Core: расширение HtmlHelper (проблема миграции) - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь обновить код в старом MVC-проекте (.NET Framework 4.5.2) для работы с .NET Core 2.2. Я застрял в методе расширения HtmlHelper, который генерирует ссылку внутри строки.

public static HtmlString GetMenu(this HtmlHelper htmlHelper)
{
   htmlString += string.Format("<li{0}>{1}</li>",
            controller == "Examples" ? " class=\"selected\"" : "",
            htmlHelper.ActionLink("Examples", "Index", "Examples")
        );
}

Класс HtmlHelper находится внутри Microsoft.AspNetCore.Mvc.ViewFeatures в .NET Core, но для метода ActionLink требуется дополнительная информация. Вместо 3 аргументов, как в старом проекте, теперь требуется 8 аргументов, и два из них - протокол и имя хоста. Но я не уверен, как получить имя хоста и протокол в статическом классе, не обращаясь к HttpContext.

1 Ответ

0 голосов
/ 25 января 2019

В ASP.NET Core класс, который ранее назывался HtmlHelper, теперь заменен интерфейсом IHtmlHelper.

Это означает, что все расширения ссылок (HtmlHelperLinkExtensions) также переключились на интерфейс.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.rendering.htmlhelperlinkextensions?view=aspnetcore-2.2

...