Да, существует перегрузка для метода ActionLink
, который принимает IDictionary<string,object>
вместо анонимного объекта.
<%=Html.ActionLink("text", "Index", "Home", null /*routeValues*/,
new Dictionary<string, object> {
{ "data-customattribute", "value" },
{ "data-another", "another-value" }
})%>
Выходы:
<a data-another="another-value" data-customattribute="value" href="/">text</a>