Создайте URL-адрес, который передает значения в действие контроллера.

Я хочу создать Url, который я могу отправить по электронной почте, который переходит к действию внутри контроллера, передавая действию идентификатор и токен. Это мой код до сих пор:

var action = new UrlActionContext
{
    Action   = "Verify",
    Controller = "Auth",
    Values = id, token
};
var url = UrlHelperExtensions.Action(action);

Однако UrlHelperExtensions.Action ожидает IUrlHelper, и мне не удалось заставить его работать с этим интерфейсом. Может кто-нибудь объяснить, как я могу сформировать Url, который идет на это действие?

Кажется, я могу найти решения только для проектов Asp.Net MVC, тогда как я использую Asp.Net Core 2.0.


person CBreeze    schedule 14.12.2017    source источник
comment
.NET Core не является аналогом .NET MVC. .NET Core — это новая версия .NET, наряду со старой .NET Framework и Xamarin. Библиотека .NET Standard начинает предоставлять общий API для всех них. blogs.msdn.microsoft.com/dotnet/2016 /26/09/ . Вы можете создать приложение MVC на основе платформы .NET Core, API или большинства других типов программ. Поэтому уместно спросить, для какого приложения вы пытаетесь создать URL-адрес?   -  person ADyson    schedule 14.12.2017
comment
Какой тип приложения генерирует этот URL-адрес и в каком контексте? Если вы создаете этот URL-адрес в фоновом процессе (без доступа к запросу), вам может быть сложно создать IUrlHelper чисто - см. ASP.Net Core 2.0: создание UrlHelper без запроса   -  person Cake or Death    schedule 14.12.2017
comment
@ADyson Это приложение Asp.Net Core 2.0. Когда пользователь нажимает «Зарегистрироваться», я хочу сгенерировать URL-адрес со своим идентификатором и токеном, указывающий на действие на контроллере, все в веб-приложении.   -  person CBreeze    schedule 14.12.2017
comment
@CalC Я не уверен, что это расплывчатость моего вопроса, но я думал, что будет относительно простое решение. Я просто хочу сгенерировать URL-адрес, например, `localhost:12345/Auth/VerifyEmail=UserId,Token   -  person CBreeze    schedule 14.12.2017
comment
Проект MVC или веб-API?   -  person ADyson    schedule 14.12.2017
comment
@ADyson Извините, MVC.   -  person CBreeze    schedule 14.12.2017
comment
@CBreeze: Что запускает процесс генерации URL-адреса, это веб-запрос? Если да, посмотрите этот пост: Injection IUrlHelper в Ядро ASP.NET   -  person Cake or Death    schedule 14.12.2017


Ответы (1)


Для ASP.Net Core 2.0 IUrlHelper доступен как свойство контроллера. ControllerBase.Url — это экземпляр IUrlHelper. Вы должны использовать его следующим образом:

var url = Url.Action(nameof(DoSomething), new { id = 10 });

person Oleksandr Dudnyk    schedule 23.01.2019