9

I have the need to put a custom attribute on an anchor which I am constructing using Html.ActionLink()

<%: Html.ActionLink("Delete", "Delete", new { id = Model.ID }, new { data-icon = "ui-icon-trash" })%>

Using the proper "data-" prefix, as per http://www.w3.org/TR/html5/elements.html#attr-data, I get the following error from Visual Studio.

Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.

Since I can't use a hyphen in the anonymous type, what would be the best way to go about adding my custom HTML attribute?

1 Answer 1

17

data-icon is not a valid C# variable name. The closest you could get is this:

<%: Html.ActionLink(
    "Delete", 
    "Delete", 
    new { id = Model.ID }, 
    new Dictionary<string, string> { { "data-icon",  "ui-icon-trash" } }
) %>

Of course this issue has been addressed in ASP.NET MVC 3 and you no longer need to write spaghetti code. So:

<%: Html.ActionLink(
    "Delete", 
    "Delete", 
    new { id = Model.ID }, 
    new { data_icon, "ui-icon-trash" }
) %>

And the underscore will be automatically converted to a hyphen.

Sign up to request clarification or add additional context in comments.

1 Comment

Cool, looks like it's time to upgrade!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.