我如何在剃刀页面中使用经典的 MVC 路由?

How can i use classic MVC routing in razor pages?

我已将类别页面中的 url 设置为

<a href="/Shared/product/@p.Id">

</a>

我的产品页面实际存在于 Shared 目录中。

视图的页面指令设置为

@page "/product/{id}"

OnGet 方法为

public void OnGet(int id)
{
    
}

为什么我会收到 404 错误?我该如何解决这个问题? 我想将 url 生成为 /product/1 例如

我试过将 url 设置为

<a href="/product/@p.Id">

</a>

但我也得到 404

您已覆盖页面 (https://www.learnrazorpages.com/razor-pages/routing#override-routes) 的默认路径,该路径是从其文件路径(根于 Pages 文件夹)生成的。将模板更改为“{id}”,仅代表路由参数。文件路径 (/shared/product) 已经匹配您想要的路径。

如果您不希望 URL 匹配页面的文件路径,您应该只覆盖路由。

顺便说一句,MVC 或 Razor Pages 应用程序中的共享文件夹仅适用于部分和布局文件,而不适用于页面。