剃须刀中的锚标记助手

Anchor tag helper in razor

我正在尝试导航到剃须刀应用程序当前目录之外的详细信息页面。如果我使用这个静态标签,它工作正常

<a href="/campdet/create/@Model.Camp.IdCamp">Details</a>

但是,如果我尝试使用其中一个标签助手,它会在 href 部分生成一个空字符串

<a asp-route="/campdet/create/1" class="btn btn-info"><i class="material-icons">zoom_in</i> </a>
<a asp-page="/campdet/create/1" class="btn btn-info"><i class="material-icons">zoom_in</i> </a><a href="/campdet/create/@Model.Camp.IdCamp">Details</a>

目标页面(campdet\create)是这样限制的

@page "{id:int}"

我在启动时没有任何特殊的路由配置。 我做错了什么?

asp-page属性中指定页面名称,在asp-route-id[=21]中指定路由=] 属性: 例如:

<a asp-page="/campdet/create" asp-route-id="@Model.Camp.IdCamp">zoom_in</a>

锚标记助手以 HTML 锚 () 标记为目标,该标记用于根据传递给各种自定义属性的值生成相对 link。它还可用于生成外部资源的绝对 URL。锚标记助手的作用是根据传递给其自定义属性的参数值生成 (href) 属性。

格式:

@Html.ActionLink("Some link text", "MyAction", "MyController", 协议: null, hostName: null, fragment: "MyAnchor", routeValues: null, htmlAttributes: null)

示例 1('Details' 页面上的元素,单击 link 将重定向到 'Edit' 的特定部分页,(例如,'Edit' 页的底部):

<span style="float:right;">@Html.ActionLink(linkText: "Edit Notes", actionName: "Edit", controllerName: "Form", protocol: null, hostName: null, fragment: "anchor", routeValues: new { id = Model.FormId }, htmlAttributes: new { @class = "badge badge-pill badge-warning" })</span>    

示例 2('Edit' 页面上的元素,“name='anchor'”和“id = 'anchor'”位于最顶部标记)

<div name="anchor" id="anchor"class="form-group">
                                <div class="col-md-12">
                                    <span>@Html.Label("ReviewStatusNotes", "Notes (280 char max):", new { style = "font-weight:500" })</span>
                                    <span>@Html.TextAreaFor(model => model.ReviewStatusNotes, new { @class = "form-control", rows = "5" })</span>
                                    @Html.ValidationMessageFor(model => model.ReviewStatusNotes, "", new { @class = "text-danger" })
                                </div>
                            </div>    

输出:

.../Form/Edit/8#anchor