ASP.NET Core UrlHelper и как это работает - PullRequest
0 голосов
/ 27 сентября 2018

Я довольно новичок в ASP.NET Core, и сейчас я пытаюсь понять, как работает UrlHelper в целом.

В моем контроллере я хочу создать абсолютный URL для другогодействие в том же контроллере, например http://localhost:PORT/api/controller/action.Вопрос в том, как мне это сделать?

Я пробовал со следующим:

var urlHelper = new UrlHelper(new ActionContext());
var url = urlHelper.Action("ACTION", "CONTROLLER");

Кроме того, каковы эти различные контексты, такие как ActionContext?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы действительно не должны создавать UrlHelper самостоятельно.Вполне вероятно, что в каком бы контексте вы ни находились в данный момент, уже имеется экземпляр IUrlHelper:

Так что шансы, что вы можете просто получить доступ к this.Url, чтобы получить URL-помощника.

Если вы оказались в ситуации, когда этого не существует, например, при реализации собственной службы, то вы всегда можете ввести IUrlHelperFactory вместе с IActionContextAccessor, чтобы сначала получить текущий контекст действия, а затем создать для него вспомогательный URL.

Что касается того, что ActionContext, это, в основном, объект, который содержит различные значения, которые идентифицируют текущий контекст действия MVC, в котором обрабатывается текущий запрос.Таким образом, он содержит информацию о реальном запросе, разрешенном контроллере и действии или состоянии модели о связанном объекте модели.По сути, это расширение HttpContext, также содержащее специфичную для MVC информацию.


Если вы используете ASP.NET Core 2.2 или более позднюю версию, вы также можете использоватьLinkGenerator вместо IUrlHelper внутри ваших служб, что дает вам более простой способ создания URL-адресов по сравнению с необходимостью создания помощника через IUrlHelperFactory.

...