.net core razor pages 多个路由属性
.net core razor pages multiple routing attributes
我正在使用 razor 页面(不是 View/Controller),我的目标是为同一页面构建以下两个路由:
- /GetItem{id:int}
- /GetItem{标题:字符串}
它们应该导致两个不同的 "actions" OnGetAsync(int id)
和 OnGetAsync(string title)
.
最初,我想在 PageModel 中使用路由属性,但得出的结论是 RazorPages PageModel 不支持它们 - 对吗?现在我正在尝试使用 @page 指令来实现这一点,但还没有找到任何东西。我不想使用路由 "configuration setup",因为我想让我的路由在使用它们的页面本地。
解决这个问题的正确方法是什么?
谢谢你解开了我的困惑!
在单个 Razor 页面中不能有两个同名*的处理程序方法,无论参数声明有何差异。处理程序方法不像 MVC 中的操作方法那样构成路由选择过程的一部分。
实现你想要的最好方法是使用named handlers。然后您可以选择是要将处理程序方法的名称作为 URL 的一部分还是作为查询字符串值包含在内。
*您甚至无法通过将 "Async" 附加到处理程序方法名称来区分处理程序方法名称。就Razor Pages而言,OnGet
和OnGetAsync
是一样的。
我正在使用 razor 页面(不是 View/Controller),我的目标是为同一页面构建以下两个路由:
- /GetItem{id:int}
- /GetItem{标题:字符串}
它们应该导致两个不同的 "actions" OnGetAsync(int id)
和 OnGetAsync(string title)
.
最初,我想在 PageModel 中使用路由属性,但得出的结论是 RazorPages PageModel 不支持它们 - 对吗?现在我正在尝试使用 @page 指令来实现这一点,但还没有找到任何东西。我不想使用路由 "configuration setup",因为我想让我的路由在使用它们的页面本地。
解决这个问题的正确方法是什么?
谢谢你解开了我的困惑!
在单个 Razor 页面中不能有两个同名*的处理程序方法,无论参数声明有何差异。处理程序方法不像 MVC 中的操作方法那样构成路由选择过程的一部分。
实现你想要的最好方法是使用named handlers。然后您可以选择是要将处理程序方法的名称作为 URL 的一部分还是作为查询字符串值包含在内。
*您甚至无法通过将 "Async" 附加到处理程序方法名称来区分处理程序方法名称。就Razor Pages而言,OnGet
和OnGetAsync
是一样的。