我在 ASP.NET Core 中创建了一个新的 Razor Pages 项目,并对
Index.cshtml
和 Privacy.cshtml
文件进行了以下更改:
// Index.cshtml
@page "/"
@model IndexModel
// Privacy.cshtml
@page "/privacy"
@model PrivacyModel
// _Layout.cshtml
<li class="nav-item">
<a class="nav-link text-dark" asp-page="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-page="/privacy">Privacy</a>
</li>
// Rendered HTML
<a class="nav-link text-dark" href="">Home</a>
<a class="nav-link text-dark" href="/privacy">Privacy</a>
为什么使用
@page "/"
的 asp-page="/"
使用空的 href 属性进行渲染?
请参阅https://www.learnrazorpages.com/razor-pages/tag-helpers/anchor-tag-helper:
必须提供目标 Razor 页面的路径,不含文件 扩大。前导
指定绝对路径。如果省略它, 框架会查找相对于当前页面的页面:/
<a asp-page="/page">Click</a>
如果未指定有效的页面名称,标签助手将呈现
属性带有空字符串。如果你想生成链接 到文件夹中的默认页面,您仍必须包含默认页面 页面文件名:href
<a asp-page="/folder/index">Folder</a>
这呈现为
<a href="/folder">Folder</a>
标签助手将生成一个
属性,其值为 取自指定页面的路由模板。href
因此,如果端点由名为“Index”的页面表示,则必须将“Index”包含为
asp-page
属性的一部分:
<a asp-page="/Index">Home</a>