Razor中asp-page标签助手跳转异常:链接指向当前页且href为空
Razor页面asp-page标签助手生成空href问题解决
使用Razor开发网站时,asp-page标签助手生成的<a>标签href属性为空,点击链接会跳转回当前页面。相关代码如下:
@page @model PMSX.WebApp.Pages.Stock.ListModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<div class="row"> <div class="col-6"> <h2 class="text-info">Stock List</h2> </div> </div> <table> <tr class="table-secondary"> <th> @Html.DisplayNameFor(m => m.StockList[0].Symbol) </th> <th> @Html.DisplayNameFor(m => m.StockList[0].StockName) </th> <th> @Html.DisplayNameFor(m => m.StockList[0].Price) </th> </tr> @foreach(var stock in Model.StockList) { <tr> <td> <a asp-page="./Stock/" asp-route-id="@stock.Symbol"> @Html.DisplayFor(m => stock.Symbol) </a> </td> <td> <a asp-page="./Stock/" asp-route-id="@stock.Symbol"> @Html.DisplayFor(m => stock.StockName) </a> </td> <td> <a asp-page="./Stock/" asp-route-id="@stock.Symbol"> @Html.DisplayFor(m => stock.Price) </a> </td> </tr> } </table>
问题原因
asp-page属性的路径末尾带有斜杠./Stock/,导致Razor路由无法正确解析目标页面位置,生成空的href属性。- 需确认目标页面是否存在于当前页面的同级目录(即
Pages/Stock/Stock.cshtml),且目标页面的@page指令已正确定义路由参数。
解决方法
- 修正asp-page路径格式:去掉路径末尾的斜杠,改为
asp-page="./Stock",让路由能正确匹配到目标页面。 - 验证目标页面配置:确保目标页面
Stock.cshtml存在于Pages/Stock目录下,且页面顶部的@page指令包含对应的路由参数,比如:
@page "{id}" @model PMSX.WebApp.Pages.Stock.StockModel
修改后的代码示例
将所有<a>标签的asp-page属性修改如下:
<a asp-page="./Stock" asp-route-id="@stock.Symbol"> @Html.DisplayFor(m => stock.Symbol) </a>
内容的提问来源于stack exchange,提问作者HoboJeff
相关产品推荐
相关产品推荐

