.net core razor pages 多个路由属性

.net core razor pages multiple routing attributes

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

它们应该导致两个不同的 "actions" OnGetAsync(int id)OnGetAsync(string title).

最初,我想在 PageModel 中使用路由属性,但得出的结论是 RazorPages PageModel 不支持它们 - 对吗?现在我正在尝试使用 @page 指令来实现这一点,但还没有找到任何东西。我不想使用路由 "configuration setup",因为我想让我的路由在使用它们的页面本地。

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

谢谢你解开了我的困惑!

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

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

*您甚至无法通过将 "Async" 附加到处理程序方法名称来区分处理程序方法名称。就Razor Pages而言,OnGetOnGetAsync是一样的。