Sonunda özel bir uzantı yöntemi buldum. HTML'yi bir Çapa nesnesinin içine yerleştirmeye çalışırken, bağlantı metni iç HTML'nin solunda veya sağında olabilir. Bu nedenle, sol ve sağ iç HTML için parametreler sağlamayı seçtim - bağlantı metni ortada. Hem sol hem de sağ iç HTML isteğe bağlıdır.
Uzantı Yöntemi ActionLinkInnerHtml:
public static MvcHtmlString ActionLinkInnerHtml(this HtmlHelper helper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues = null, IDictionary<string, object> htmlAttributes = null, string leftInnerHtml = null, string rightInnerHtml = null)
{
// CONSTRUCT THE URL
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var url = urlHelper.Action(actionName: actionName, controllerName: controllerName, routeValues: routeValues);
// CREATE AN ANCHOR TAG BUILDER
var builder = new TagBuilder("a");
builder.InnerHtml = string.Format("{0}{1}{2}", leftInnerHtml, linkText, rightInnerHtml);
builder.MergeAttribute(key: "href", value: url);
// ADD HTML ATTRIBUTES
builder.MergeAttributes(htmlAttributes, replaceExisting: true);
// BUILD THE STRING AND RETURN IT
var mvcHtmlString = MvcHtmlString.Create(builder.ToString());
return mvcHtmlString;
}
Kullanım Örneği:
İşte bir kullanım örneği. Bu örnek için sadece bağlantı metninin sağ tarafındaki iç html'yi istedim ...
@Html.ActionLinkInnerHtml(
linkText: "Hello World"
, actionName: "SomethingOtherThanIndex"
, controllerName: "SomethingOtherThanHome"
, rightInnerHtml: "<span class=\"caret\" />"
)
Sonuçlar:
bu şu HTML ile sonuçlanır ...
<a href="/SomethingOtherThanHome/SomethingOtherThanIndex">Hello World<span class="caret" /></a>