views:

2030

answers:

2

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?

A: 

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.

Jack Marchetti
Thanks for answering, but if you read my full question you will see that i can get this to work like you have just said, BUT it doesn't use my pre-selected item
Harry
+5  A: 

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

Harry
Thank you!!! This has been driving me nuts for 2 day.
Alfa
Thank you! Me too, although I found this after 30 minutes.
uriDium