ASP.NET Core 中的 <a asp-page="linkhere"> 和 <a href="linkhere"> 有什么区别?

What's the difference between <a asp-page="linkhere"> and <a href="linkhere"> in ASP.NET Core?

这是一个基本问题:

ASP.NET Core <a asp-area="" asp-page="/linkhere">test</a> 和经典 <a href="/linkhere">test</a> 之间的真正区别是什么?

最终结果似乎总是一样(最后总是一个 href 属性)

它是否以某种方式在幕后防止点击劫持或类似的东西?

换句话说,使用 asp 页面会带来任何安全优势吗?

您可以自定义 Razor 页面的路由,这样您的 LinkHere Razor 页面和 URL 页面可能会有所不同。在这种情况下,asp-page 方法确保 URL 将匹配页面,但 href 方法需要相应地更新。

有关如何自定义 Razor 页面 URL 的示例,请参阅 Configure a page route:

options.Conventions.AddPageRoute("/Contact", "TheContactPage/{text?}");

在此示例中,页面 Contact 有一个 URL 的 TheContactPage 和一个可选的额外段。