मैं एक कस्टम एक्सटेंशन विधि के साथ समाप्त हुआ। इसकी ध्यान देने योग्य बात, जब HTML को एंकर ऑब्जेक्ट के अंदर रखने की कोशिश की जाती है, तो लिंक टेक्स्ट या तो बाईं ओर हो सकता है, या आंतरिक HTML के दाईं ओर हो सकता है। इस कारण से, मैंने बाएं और दाएं आंतरिक HTML के लिए पैरामीटर प्रदान करने का विकल्प चुना - लिंक पाठ बीच में है। बाएँ और दाएँ दोनों आंतरिक HTML वैकल्पिक हैं।
एक्सटेंशन विधि 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;
}
उपयोग का उदाहरण:
यहाँ उपयोग का एक उदाहरण है। इस उदाहरण के लिए मैं केवल लिंक पाठ के दाईं ओर भीतरी HTML चाहता था ...
@Html.ActionLinkInnerHtml(
linkText: "Hello World"
, actionName: "SomethingOtherThanIndex"
, controllerName: "SomethingOtherThanHome"
, rightInnerHtml: "<span class=\"caret\" />"
)
परिणाम:
निम्नलिखित HTML में यह परिणाम ...
<a href="/SomethingOtherThanHome/SomethingOtherThanIndex">Hello World<span class="caret" /></a>