网址页面创建了错误的网址

时间:2019-02-10 19:41:15

标签: c# asp.net-core-mvc asp.net-core-2.1

看看这段代码:

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

注册簿来自哪里?为什么不是Account / ConfirmEmail?我确实在Account controller的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 :(得分:0)

它们全都用于生成url,但是,Url.Action用于MVC,Url.Page用于Razor页面。您在帐户控制器中使用需要Url.Action的代码。

请参阅Url Generation for controller/actionUrl Generation for pages

在asp.net core 2.0中,scaffold Identity使用MVC,而在asp.net core 2.1+中,它使用Razor Pages。