我使用的是 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 而言,OnGet
和 OnGetAsync
是相同的。
关于c# - .net core razor页面多个路由属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908632/