c# - .net core razor页面多个路由属性

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

我使用的是 razor 页面(不是 View / Controller ),我的目标是为同一页面构建以下两条路由:

  • /GetItem{id:int}
  • /GetItem{标题:字符串}

它们应该导致两个不同的“操作”OnGetAsync(int id)OnGetAsync(string title)

最初,我想在 PageModel 内使用路由属性,但得出的结论是 RazorPages PageModel 不支持它们 - 这是正确的吗?现在我试图用 @page 指令来实现这一点,但没有找到任何东西。我不想使用路由“配置设置”,因为我想让我的路由位于使用它们的页面本地。

解决这个问题的正确方法是什么?

感谢您解答了我的困惑!

最佳答案

无论参数声明有何差异,在单个 Razor 页面中都不能有两个具有相同名称*的处理程序方法。处理程序方法不像 MVC 中的操作方法那样构成路由选择过程的一部分。

实现您想要的效果的最佳方法是使用 named handlers 。然后,您可以选择是否要将处理程序方法的名称作为 URL 的一部分或作为查询字符串值包含在内。

*您甚至无法通过在处理方法名称后附加“Async”来区分处理方法名称。就 Razor Pages 而言,OnGetOnGetAsync 是相同的。

关于c# - .net core razor页面多个路由属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908632/

相关文章:

c# - 在 .NET Core 2.1 中使用 AOP 进行日志记录

c# - 带有特殊字符的 URL #

asp.net - 如何将 .ASPX 页面重定向到 .NET Core Razor 页面

visual-studio-2017 - Visual Studio Enterprise 2017 预览版 15.7 中的 ASP.NET Core 2.1

asp.net-core - 跨多个项目共享 View 组件

c# - .Net Core 3.0 JsonSerializer 填充现有对象

c# - 检查莫尔斯电码转换器的输入

c# - 回复时出现 TCP 错误

c# - 使用 dataTable 从 dataGridView 中删除行

asp.net-core - Fluent 验证在 Bootstrap 4 Modal 中不起作用