首页 文章

.net core razor页面有多个路由属性

提问于
浏览
1

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

  • / GetItem {id:int}

  • / GetItem {title:string}

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

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

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

谢谢你清除我的困惑!

1 回答

  • 2

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

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

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

相关问题