【问题标题】:RazorPages How to pass GET parameters to OnGet?RazorPages 如何将 GET 参数传递给 OnGet?
【发布时间】:2021-10-31 03:58:55
【问题描述】:

我有一个 RazorPages 应用程序,它的索引页有一个项目列表。我希望此页面仅显示列表的 50 个元素并决定使用 GET 参数显示哪些项目,例如,如果我将 ?page=2 传递给页面,它必须显示从 51 到 100 的元素

正如我所发现的,我可以像这样在OnGet 中处理这种类型的请求:

public void OnGet(int page)

但是当我打开页面时 - OnGet 中的 page 参数始终为 0,即使我通过 '?page=2' 或类似的东西

我也尝试使用 string 而不是 int 并且总是得到“/Index”

在 OnGet 中处理这些参数的正确方法是什么?

【问题讨论】:

  • 你的路线模式是什么? (通常在Configure 中定义Startup.cs)
  • 我刚刚检查了 Startup.cs 并没有找到与路由模式相关的任何内容。我是 RazorPages 新手,可能不知道什么是路由模式
  • 看看this page。
  • 我将@page 的行更改为@page "{pageNumber:int?}",并将OnGet 更改为OnGet(int pageNumber)。现在,如果我指定 url localhost/2 - OnGet 中的 pageNumber 为 2。这并不是我真正需要的,但我会使用它。我想我几乎解决了我的问题,我只需要在 @page 之后以某种方式更改该字符串
  • 不能使用“page”作为参数。我经过惨痛的教训才学到这个。有关解决方法,请参阅@Serge 答案。

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


【解决方案1】:

尝试在你的页面视图中添加

@page "{pageNum:int?}"

和模型

public void OnGet(int? pageNum)

【讨论】:

  • 我在帖子下写了一条评论,将@page 更改为@page "{pageNumber:int?}"。 {pageNum?:int} 和 {pageNum:int?} 有什么区别?
  • 我发现的唯一区别是,当我使用 {pageNum?:int} 时会出现错误,而当我使用 {pageNum:int?} 时 - 我没有收到任何错误...
  • @MikhailKriseev 不同的是那个pageNum?是可选的,如果没有它,url 也将有效,但如果您使用 PageNum,您将始终在您的 url 中提供 pageNum。你可以试试 PageNum?:int?也请让我知道它是否有效。
  • 我使用了 PageNumber,而不是 PageNum,并且使用了 PageNumber?:int?它仍然显示The route parameter name 'pageNumber?' is invalid
  • @MikhailKriseev 感谢您的反馈,真的很奇怪,以前从未遇到过这样的事情。你是第一个。
猜你喜欢
  • 2019-08-03
  • 1970-01-01
  • 2018-12-10
  • 2019-02-02
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
相关资源
最近更新 更多