[英]How to convert anchor tag HTML links to use @Html.ActionLink
我正在開發本地化項目,我需要將錨標記轉換為使用@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
,我不確定三元運算符是否正確以及我所做的其他事情。
使用開箱即用的Html.ActionLink
函數不能擁有嵌套元素。 您將不得不創建一個重載,它接受類似MvcHtmlString
東西並將其插入到錨點中。
public static IHtmlString ActionLink(this HtmlHelper html, IHtmlString innerHtml, string action, string controller, IDictionary<string, object> htmlAttributes)
{
var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
var tag = new TagBuilder("a");
tag.MergeAttributes(htmlAttributes);
tag.MergeAttribute("href", urlHelper.Action(action, controller));
return new HtmlString(tag.ToString(TagRenderMode.Normal));
}
(從記憶中,所以你必須解決一些我確定的問題)
這里是Hack(低和臟)解決方法,以防您需要使用ajax或手動鏈接時使用的某些功能(使用標記):
<%= Html.ActionLink("LinkTextToken", "ActionName", "ControllerName").ToHtmlString().Replace("LinkTextToken", "Refresh <span class='large sprite refresh'></span>")%>
您可以使用任何文本而不是'LinkTextToken',它只是被替換,重要的是它不會發生在actionlink內的任何其他地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.