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属性。
正确写法二选一:
- 用空字符串直接指向根页面:
<a class="nav-link text-dark" asp-page="">Home</a>
- 指定页面的文件名(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
相关产品推荐
相关产品推荐

