You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Razor Pages中asp-page="/"渲染空href问题

问题:为何使用@page "/"搭配asp-page="/"的链接会渲染出空href属性?

修改的文件内容:

Index.cshtml

// Index.cshtml
@page "/"
@model IndexModel

Privacy.cshtml

// Privacy.cshtml
@page "/privacy"
@model PrivacyModel

_Layout.cshtml

// _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>

渲染后的HTML:

// Rendered HTML
<a class="nav-link text-dark" href="">Home</a>
<a class="nav-link text-dark" href="/privacy">Privacy</a>

原因与解决方案

问题出在Razor Pages的路由匹配逻辑上:

  • 你给Index页面加的@page "/"是自定义了它的访问路径(根路径),但页面本身的标识还是对应文件名Index。
  • asp-page="/"的写法有误,因为asp-page属性需要指向页面文件的路径(不含.cshtml后缀),而非你自定义的路由模板。路由系统找不到路径为/的页面文件,因此生成了空的href属性。

正确写法二选一:

  1. 用空字符串直接指向根页面:
<a class="nav-link text-dark" asp-page="">Home</a>
  1. 指定页面的文件名(Index.cshtml在根目录下):
<a class="nav-link text-dark" asp-page="/Index">Home</a>

两种写法都会正确渲染出 <a class="nav-link text-dark" href="/">Home</a>。


内容的提问来源于stack exchange,提问作者Mateusz Kurowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:53:30