views:

415

answers:

2

Hey guys

Just wondering how do I mimic the following using attributes...

<%= Html.EditorFor(x => x.SportProgramIdList, "FormMultiSelectDropDownList", "SportProgramIds")%>

I know I can specify the template by using [UIHint("FormMultiSelectDropDownList")] but I am left with the problem with how to set the name...

Cheers Anthony

A: 

I Guess you'll have to create your own CustomAttribute UINameAttribute. You could use the ModelMetadata to keep your attribute and then I'm not sure what would be the best way to get it, i guess you would have to overide the HtmlHelper.EditorFor Extension without the parameter and pass your attribute to the next.

I'm too lazy and to tired to try for a more complete answer.

look at :

Why You Don't Need ModelMetadata.Attributes

ASP.NET MVC 2 Templates, Part 2: ModelMetadata

moi_meme
A: 

Use the objectAttributes argument

<%= Html.EditorFor(x => x.SportProgramIdList, "FormMultiSelectDropDownList", new { id="SportProgramIds" }) %>>

you can use this to set any of the html input attributes

Cheddar
This convention doesn't work for EditorFor or DisplayFor because you aren't passing in an anonymous HTML attributes object, it is an anonymous ViewData additions object. Adding something here would still require consuming it on a custom editor/display template. An example of this was done in an [answer to a similar question](http://stackoverflow.com/questions/1625327/asp-net-mvc-2-editorfor-and-html-properties/3021176#3021176).
patridge