修改页面路由后,使用asp页面呈现的链接会带有空href

问题描述 投票:0回答:1

我在 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 属性进行渲染?

routes razor-pages
1个回答
0
投票

请参阅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>

© www.soinside.com 2019 - 2024. All rights reserved.