【问题标题】:How to redirect to a asp.net core razor page (no routes)如何重定向到 asp.net core razor 页面(无路由)
【发布时间】:2018-01-31 11:55:54
【问题描述】:

这里有一个剃须刀cs页面:

public IActionResult OnPost(){
  if (!ModelState.IsValid) {
    return Page(); 
  }

  return RedirectToPage('Pages/index.cshtml'); 

}

还有一个cshtml页面:

@page
@using RazorPages

@model IndexModel
<form method="POST">
  <input type="submit" id="Submit">
</form>

我想在提交表单时重定向到同一页面,但我不断收到 400 错误。是否可以在不使用路由的情况下进行重定向,只需转到 url 中的 cshtml 文件?

【问题讨论】:

  • 返回视图(视图名);
  • 这是一个剃须刀页面
  • PageModel 类型
  • 从您的重定向路径中删除“页面”。

标签: c# asp.net-core razor-pages


【解决方案1】:

@Roman Pokrovskij 这可能太老了,但如果你想重定向到一个区域,你应该:

return RedirectToPage ( "/Page", new { Area = "AreaName" } );

【讨论】:

    【解决方案2】:

    查看 MS 页面 https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/?tabs=visual-studio

    URL 路径与页面的关联取决于页面在文件系统中的位置。下表显示了 Razor 页面路径和匹配的 URL:

    文件名路径匹配 URL -------------------------- ---------- /Pages/Index.cshtml // 或 /Index /Pages/Contact.cshtml /联系人 /Pages/Store/Contact.cshtml /Store/Contact /Pages/Store/Index.cshtml /Store 或 /Store/Index

    页面的 URL 生成支持相对名称。下表显示了使用不同的 RedirectToPage 参数选择的索引页面 页面/客户/Create.cshtml:

    RedirectToPage(x) 页面 ------------------------------------ --------- RedirectToPage("/Index") 页面/索引 RedirectToPage("./Index");页面/客户/索引 RedirectToPage("../Index") 页面/索引 RedirectToPage("Index") 页面/客户/索引

    【讨论】:

    • 您好,请问我们应该如何重定向到以下区域的页面:/Areas/MyArea/Pages/Index.cshtml?
    • 对我来说最大的问题是认为我需要路径中的“Pages”或“/Pages”。一旦我删除它,一切正常。从您的重定向路径中删除“页面”。
    【解决方案3】:

    在视图中试试这个;

    @using (Html.BeginForm())
    {
       <input type="submit" id="Submit">
    }
    

    【讨论】:

    • 这适用于 RedirectToPage('Pages/index.cshtml');改为RedirectToPage('Index');
    • 你也可以只使用 RedirectToPage();
    【解决方案4】:

    如果您想在某些操作后重定向到不同的页面:

    return Redirect("~/Page/YourAction");
    

    【讨论】:

      猜你喜欢
      • 2019-05-22
      • 2018-10-21
      • 2020-05-06
      • 2020-05-25
      • 1970-01-01
      • 2020-05-06
      • 2021-02-22
      • 2021-02-21
      相关资源
      最近更新 更多