<div data-collapse class="left-justify" id="requirements">
@Html.Raw(string.Format(@_stringLocalizer["RegisterNoticeMessage"], @Html.ActionLink(@_stringLocalizer["RegisterLinkDisplayName"], "Register")))
</div>
在这段代码中, @ Html.ActionLink()返回 Microsoft.AspNetCore.Mvc.Rendering.TagBuilder ,而不是返回包含URL路径的锚元素。指定的动作。 在 string.Format()中使用 @ Html.ActionLink()的正确方法是什么。或者,我在这里错过了什么吗?
答案 0 :(得分:1)
助手方法Html.ActionLink
始终返回TagBuilder
对象。将此类对象传递到string
参数时,将调用ToString()
方法,从而产生观察到的输出(类名称:“ Microsoft.AspNetCore.Mvc.Rendering.TagBuilder”)。 / p>
在我看来,您正在尝试以一种非常怪异的方式创建超链接。您是否尝试过使用Url.Action
辅助方法?此方法返回一个普通的旧string
,可以插入任何href属性。
例如该代码将等效于您要实现的目标:
@Html.Raw(
string.Format(_stringLocalizer["RegisterNoticeMessage"],
"<a href=\"" + Url.Action("Register") + "\">" + _stringLocalizer["RegisterLinkDisplayName"] + "</a>")
)
侧注:
string
值,如this中所述。@
。Html.Raw
时要格外小心,因为它可能会导致XSS漏洞。