【发布时间】:2015-08-10 21:04:30
【问题描述】:
我正在处理一个本地化项目,我需要将锚标记转换为使用@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,而且我不确定三元运算符以及我所做的一切是否正确。
【问题讨论】:
-
MVC 默认方法不允许你这样做。但是已经发布了一个简单的 hack 演示。您也可以通过其他方式实现您的目标。如果这个技巧不起作用,请告诉我。
-
@Url.Action和... href="@Url.Action("index", "home")"...一样有什么问题? -
@Max Poshusta 是他们使用
Html.ActionLink的任何限制吗? -
嘿,我现在正在打电话 - 我早早离开了办公室。 Mehmood 我会在早上更深入地阅读答案,但我认为没有任何限制,而且@Alexei Levenkov 我也在玩弄 Url.Action 以及使用它可以解决我的问题的想法。再次,我将在早上深入研究这些内容并发表回复。感谢您的所有意见!
-
今天早上我和一位同事谈过这件事(他昨天不在办公室)。原来有人已经创建了一种方法来做我需要的事情。我只是在@(new MvcHtmlString(CalledTheMethodHere) 之后调用了该方法。不过,感谢您的回答,我正在经历大量的这些转换,我相信我可以在某个时候利用这些答案!