【问题标题】:How to redirect to Home page?如何重定向到主页?
【发布时间】:2020-01-09 12:34:43
【问题描述】:

确认电子邮件页面包含:

public async Task<IActionResult> OnGetAsync(string userId, string code)
{
    if (userId == null || code == null)
    {
        return RedirectToPage("/Index"); // <----------error
    }

    var user = await _userManager.FindByIdAsync(userId);
    if (user == null)
    {
        return NotFound($"Unable to load user with ID '{userId}'.");
    }

    code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
    var result = await _userManager.ConfirmEmailAsync(user, code);
    StatusMessage = result.Succeeded ? "Thank you for confirming your email." : "Error confirming your email.";

    return Page();
}

但是当我测试它的空参数时,它会尝试重定向到页面 return RedirectToPage("/Index");

它会产生异常:

处理请求时发生未处理的异常。 InvalidOperationException:没有名为“/Index”的页面与提供的匹配 价值观

如何重定向到主页?

【问题讨论】:

  • RedirectToPage("/Index") 将有效地寻找Pages/Index.cshtml——这样的页面是否存在?
  • ConfirmEmailcshtml 页面位于 ...\Areas\Identity\Pages\Account,Index.razor 位于 ...\Pages
  • RedirectToPage() 会将 HTTP 重定向到 Razor 页面,而不是 Blazor 页面。 Index.razor 是 Blazor 组件,可能是您的起始页。在这种情况下,您希望仅重定向到根目录,以便 Blazor 应用程序重新启动并获取其自己的客户端路由。
  • stackoverflow.com/questions/63711424/…你能回答这个问题吗? @ZedZip

标签: asp.net-core razor-pages blazor


【解决方案1】:

如果页面位于不同的文件夹中,它会这样工作

return Redirect("~/");

【讨论】:

    【解决方案2】:

    Blazor 中,您应该使用 Microsoft.AspNetCore.Components.NavigationManager

    @inject NavigationManager NavigationManager
    
    if (userId == null || code == null)
        {
            NavigationManager.NavigateTo("/Index"); // <----------error
        }
    

    【讨论】:

    【解决方案3】:

    RedirectToPage() 返回一个 IActionResult,它通过提供 Razor 页面的路径 将 HTTP 重定向到您指定的路由。 Razor 页面是 Pages 文件夹中的 .cshtml 文件。

    如果您使用的是 Blazor,那么您可能会使用它附带的客户端路由器。在这种情况下,只有一个 Razor 页面 _Host.cshtml 将充当 Blazor 应用程序的主要入口点。

    所以你可以做的是重定向到/_Host,尽管我不建议这样做。相反,只重定向到应用程序根目录, 不询问服务器端端点路由器路由是什么,这可能是最好的主意:

    return LocalRedirect("/");
    

    【讨论】:

    猜你喜欢
    • 2011-05-13
    • 2020-01-09
    • 1970-01-01
    • 2013-10-24
    • 2015-08-09
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多