Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC 4 ActionLink Dictionary htmlAttributes doesn't work

I hope this is just a bug but figured maybe it was just me.

@Html.ActionLink("Test", "Test", "Test",
  new { id = 1 },
  new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } })

This does work but if I wanted to add further attributes I have to do it manually!

@Html.ActionLink("Test", "Test", "Test",
  new { id = 1 },
  new { @class="ui-btn-test", data_icon="gear", data_new_attr="someextra" })

The first doesn't work anymore and I need this one to work. The second works but don't care that it does, because I'm trying to add more attributes, object will not work unless told differently.

like image 236
Jason Foglia Avatar asked May 08 '12 23:05

Jason Foglia


1 Answers

None of the provided ActionLink helper methods accept parameters like you're specifying. The only ones that take a parameter of type IDictionary for the html attributes expect a RouteValueDictionary for the route values. As it is, you're currently calling a function that is treating your dictionary as an anonymous object

Try

@Html.ActionLink("Test", "Tesz", "Test",
new RouteValueDictionary(new {id = 1}),
new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } })

Or implement your own extension method.

like image 52
DMulligan Avatar answered Nov 13 '22 00:11

DMulligan