Url.Page создает неправильный URL - PullRequest
0 голосов
/ 10 февраля 2019

Посмотрите на этот код:

var callbackUrl = Url.Page("/Account/ConfirmEmail", null, new { userId = user.Id, code }, Request.Scheme);

Результат такой:

http://localhost:5000/Account/Register?userId=614d16ae-4e95-4796-8d67-cb829e12585b&code=CfDJ8OeNFdnFCrtCsRU7ofatUuROudlTo%2BFQe84oAiL%2BPJSoYwGH9q1Xadg8XBbpOFg5DiRH1vDoGeQ8l3qIFHjB3NMM3ZDTlQexawj1b%2BJ7P6X3SHoBsYs7jLYwcfGQCbnk1SJA5koFkoDcWj04nsjzQlJMe8ttR0DFdi%2B6TTbWI8WkPBaS083O3aU%2BL2bbYGNwwikhrkbB0nHy4PRzK1LZuZo%3D&page=%2FAccount%2FConfirmEmail

Откуда приходит Регистрот?Почему это не Аккаунт / ConfirmEmail?Я создал это в методе Register контроллера учетной записи, так что я полагаю, что оттуда пришел регистр, но почему он использовал это, а не то, что я передал?Я вижу, что он добавил его в качестве параметра в самом конце, но почему?

Насколько я могу судить, в соответствии с этим я все сделал правильно.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.urlhelperextensions.page?view=aspnetcore-2.1#Microsoft_AspNetCore_Mvc_UrlHelperExtensions_Page_Microsoft_AspNetCore_Mvc_IUrlHelper_System_String_System_String_System_Object_System_String_System_String_

Я все еще использую ядро ​​2.1.

РЕДАКТИРОВАТЬ: их учебник регистрации говорит то же самое, что и у меня выше:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-2.1&tabs=visual-studio#scaffold-register-login-and-logout

Если яиспользуйте .Action вместо .Page Я получаю желаемый результат, но я хотел бы знать, почему .Page действует по-другому.

1 Ответ

0 голосов
/ 12 февраля 2019

Все они используются для генерации URL, однако Url.Action для MVC и Url.Page для Razor Pages. Вы используете код в контроллере аккаунта, который необходим Url.Action.

См. Генерация URL для контроллера / действия и Генерация URL для страниц

В Asp.net Core 2.0, идентификация скаффолда использует MVC, а в Asp.net Core 2.1+,он использует Razor Pages.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...