Andrew Harry
Andrew Harry

Reputation: 13909

ASP.net MVC DropDownList Pre-Selected item ignored

I am facing a simular problem as outlined in the question "Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item"

I'm using ASP.net MVC 1.0 and need to associated a javascript call when the DropDownList is changed.

<%=Html.DropDownList("SelectList", 
                    (SelectList)ViewData["SelectList"], 
                     new { onchange="javascript:selected_droplist();" } )%>

This is all good except it is ignoring my pre-selected item

If I remove the extra functionality:

<%=Html.DropDownList("SelectList")%>

It is happy and will use my pre-selected item. BUT i don't get the Javascript action!

So, how do i add the javascript to the onchange event?

Upvotes: 9

Views: 6264

Answers (3)

Tom Schreck
Tom Schreck

Reputation: 5287

I know this is an old post, but I found a link that shows a workaround where you can keep the same name for the dropdown list and keep data binding for the model on the form post:

http://publicityson.blogspot.com/2010/07/aspnet-mvc-htmldropdownlist-not-showing.html

I think this is a huge bug and am surprised it's not been fixed yet. Anyways, I hope this helps.

Upvotes: 0

Andrew Harry
Andrew Harry

Reputation: 13909

Found the Answer

When the Name given to the control (the first parameter in this case being "SelectList") is the same as one of the Keys in the ViewData dictionary basically it screws up and ignores the pre-selected item in the SelectList

By simply renaming the DropDownList it works correctly and binds to the Pre-Selected item

Upvotes: 20

Jack Marchetti
Jack Marchetti

Reputation: 15754

Unfortunately i'm not at work so i can't get the actual code. However, I accomplished this by writing the javascript event as an html attribute in the Controller, then passed it along in the ViewData.

When you write the code:

<%=Html.DropDownList("SelectList", (SelectList)ViewData["SelectList"], [htmlAttribute])

Basically in the Controller you would write the htmlattribute and assign it in the dropdownlist method.

Upvotes: 0

Related Questions