我正在开展本地化项目,我需要将锚标记转换为使用@Html.ActionLink
。
我有这个html助手:
@helper RenderIcon(bool condition, string @class, string title, string url, bool openInNewWindow = false)
{
if (condition)
{
<a href="@(new MvcHtmlString(url))" @(openInNewWindow ? " target='_blank'" : "")>
@(this.RenderIconSpan(@class, title))
</a>
}
}
我想出了这个:
@Html.ActionLink(this.RenderIconSpan(@class, title), url, null, openInNewWindow ? new { target="_blank" } : null)
但是我收到了这个错误:
无法解决方法......候选人......
如果我需要提供更多信息,请发表评论,我会提供。我从未将此复合词的锚标记转换为ActionLink
,而且我不确定三元运算符是否与我所做的其他所有内容一致。
答案 0 :(得分:2)
您不能使用开箱即用的\Z
函数来嵌套元素。您将不得不创建一个带有类似Html.ActionLink
之类的重载并将其插入锚点。
MvcHtmlString
(从记忆中,所以你必须解决一些我确定的问题)
答案 1 :(得分:2)
以下是Hack(低和脏)解决方法,以防您需要使用ajax或手动链接时使用的某些功能(使用标记):
<%= Html.ActionLink("LinkTextToken", "ActionName", "ControllerName").ToHtmlString().Replace("LinkTextToken", "Refresh <span class='large sprite refresh'></span>")%>
您可以使用任何文本而不是&#39; LinkTextToken&#39;,它只是被替换,重要的是它不会发生在actionlink内的任何其他位置。