.net核心剃须刀页面具有多个路由属性

时间:2018-10-20 18:07:06

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

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

  • / GetItem {id:int}
  • / GetItem {title:string}

它们应该导致两个不同的“动作” for line in file2: OnGetAsync(int id)

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

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

感谢您消除我的困惑!

1 个答案:

答案 0 :(得分:2)

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

实现所需目标的最佳方法是使用named handlers。然后,您可以选择是将处理程序方法的名称作为URL的一部分还是作为查询字符串值来包含。

*您甚至无法通过将“异步”附加到一个来区分处理程序方法名称。就Razor Pages而言,OnGetOnGetAsync是相同的。