I'm going to write a simple helper that wraps Html.ActionLink and adds a certain class attribute to it. At the moment it looks like:
@helper MyActionLink(string text, string action, object routeValues, object htmlAttributes)
{
@Html.ActionLink(text, action, routeValues, new { @class = "MyClass" })
}
It actually adds needed @class attribute, but ignores all the passed htmlAttributes
. So, if being used like
@MyActionLink("Item1", "Edit", new { itemId = 1 }, new { @class = "class1" })
it outputs
<a class="MyClass" href="/Test/Edit?itemId=1">Item1</a>
but I want it to have 2 classes: class="class1 MyClass"
How can I merge those htmlAttributes?
Try this snippet
@helper MyActionLink(string text, string action, object routeValues, object htmlAttributes)
{
var attributes = (IDictionary<string, object>) HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
object cssClass;
if(attributes.TryGetValue("class", out cssClass) == false)
{
cssClass = "";
}
attributes["class"] = cssClass + " MyClass";
@Html.ActionLink(text, action, new RouteValueDictionary(routeValues), attributes)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With