如何将锚标记HTML链接转换为使用@ Html.ActionLink

时间:2015-08-10 21:04:31

标签: c# html razor

我正在开展本地化项目,我需要将锚标记转换为使用@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,而且我不确定三元运算符是否与我所做的其他所有内容一致。

2 个答案:

答案 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内的任何其他位置。