A标签的属性名前缀为asp-
asp-controller
指定链接的控制器名
asp-action
指定动作名
如果指定了控制名,而没有指定动作名,则动作名是产生当前视图的动作名,如果没有控制器名,则默认的控制器是生成当前视图的控制器
asp-route-{value}
为Action传递参数 value可以替换为任意参数名
如果在路由映射中含有参数名,则生成的链接直接附带参数值
<a asp-controller="Speaker"
asp-action="Detail"
asp-route-id="@Model.SpeakerId">SpeakerId: @Model.SpeakerId</a>
<a href="/Speaker/Detail/12">SpeakerId: 12</a>
否则
<a asp-controller="Speaker"
asp-action="Detail"
asp-route-speakerid="@Model.SpeakerId">SpeakerId: @Model.SpeakerId</a>
生成为
<a href="/Speaker/Detail?speakerid=12">SpeakerId: 12</a>
asp-route
用于直接链接到命名路由,不要和asp-controller和asp-action一起用
如 路由定义
[Route("/Speaker/Evaluations",
Name = "speakerevals")]
public IActionResult Evaluations() => View();
<a asp-route="speakerevals">Speaker Evaluations</a>
生成Html
<a href="/Speaker/Evaluations">Speaker Evaluations</a>
asp-all-route-data
用于给action传递多个参数
如参数值为
@{
var parms = new Dictionary<string, string>
{
{ "speakerId", "11" },
{ "currentYear", "true" }
};
}
<a asp-route="speakerevalscurrent"
asp-all-route-data="parms">Speaker Evaluations</a>
生成的html
<a href="/Speaker/EvaluationsCurrent?speakerId=11¤tYear=true">Speaker Evaluations</a>
asp-fragment
用于添加锚点 #
<a asp-controller="Speaker"
asp-action="Evaluations"
asp-fragment="SpeakerEvaluations">Speaker Evaluations</a>
<a href="/Speaker/Evaluations#SpeakerEvaluations">Speaker Evaluations</a>
asp-area
用于指定area
asp-protocol
用于指定协议 如https
asp-host
用于指定域名
asp-page
用于Razor Pages ,用于链接到某个page
与asp-route, asp-controller, 和asp-action 冲突,不可同时使用,但可以和asp-route-{value}一起传递参数
<a asp-page="/Attendee"
asp-route-attendeeid="10">View Attendee</a>
生成
<a href="/Attendee?attendeeid=10">View Attendee</a>
asp-page-handler
用于Razor Pages,来链接到某个handler
例:Handler
public void OnGetProfile(int attendeeId)
{
ViewData["AttendeeId"] = attendeeId;
// code omitted for brevity
}
将On和动作get去掉 ,如果以Async结尾,也要去掉
<a asp-page="/Attendee"
asp-page-handler="Profile"
asp-route-attendeeid="12">Attendee Profile</a>
生成
<a href="/Attendee?attendeeid=12&handler=Profile">Attendee Profile</a>