asp.net mvc radio button state

Posted by Josh Bush on Stack Overflow See other posts from Stack Overflow or by Josh Bush
Published on 2008-11-04T20:38:11Z Indexed on 2010/06/07 12:32 UTC
Read the original article Hit count: 218

Filed under:
|

I'm trying out asp.net mvc for a new project, and I ran across something odd. When I use the MVC UI helpers for textboxes, the values get persisted between calls. But, when I use a series of radio buttons, the checked state doesn't get persisted.

Here's an example from my view.

<li>
        <%=Html.RadioButton("providerType","1")%><label>Hospital</label>
        <%=Html.RadioButton("providerType","2")%><label>Facility</label>
        <%=Html.RadioButton("providerType","3")%><label>Physician</label>
</li>

When the form gets posted back, I build up an object with "ProviderType" as one of it's properties. The value on the object is getting set, and then I RedirectToAction with the provider as a argument. All is well, and I end up at a URL like "http://localhost/Provider/List?ProviderType=1" with ProviderType showing. The value gets persisted to the URL, but the UI helper isn't picking up the checked state.

I'm having this problem with listbox, dropdownlist, and radiobutton. Textboxes pick up the values just fine. Do you see something I'm doing wrong? I'm assuming that the helpers will do this for me, but maybe I'll just have to take care of this on my own. I'm just feeling my way through this, so your input is appreciated.

Edit: I just found the override for the SelectList constructor that takes a selected value. That took care of my dropdown issue I mentioned above.

Edit #2: I found something that works, but it pains me to do it this way. I feel like this should be inferred.

<li>
  <%=Html.RadioButton("ProviderType","1",Request["ProviderType"]=="1")%><label>Hospital</label>
  <%=Html.RadioButton("ProviderType", "2", Request["ProviderType"] == "2")%><label>Facility</label>
  <%=Html.RadioButton("ProviderType", "3", Request["ProviderType"] == "3")%><label>Physician</label>
</li>

Hopefully someone will come up with another way.

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about ui-helper