ASP.NET MVC 2 - Html.DropDownList not working in an AJAX form
- by Jacob
I am trying to create an MVC 2 solution and I have run into the following problem:
Index.aspx:
<% using(Ajax.BeginForm("Forms", new AjaxOptions{UpdateTargetId="form", HttpMethod="POST"})) { %>
<h3>Input: </h3>
<p><%= Html.DropDownList("dropDown")%>
<input type="submit" value="Select Mission" /></p>
<% } %>
HomeController.cs:
public ActionResult Index()
{
var list = new [] { "item1", "item2", "item3" };
ViewData["dropDown"] = new SelectList(list);
return View();
}
public ActionResult Forms(string dropDown)
{
if (dropDown == null || dropDown == "")
ViewData["txt"] = "Ahhh...";
else
ViewData["txt"] = "You entered: " + dropDown;
return PartialView("Form", dropDown);
}
Form.ascx:
<%: ViewData["txt"] %
This does not work. However, the whole thing does work if I use an Html.TextBox instead. For example:
<div id="form">
<% using(Ajax.BeginForm("Forms", new AjaxOptions{UpdateTargetId="form", HttpMethod="POST"})) { %>
<h3>Input: </h3>
<%= Html.TextBox("textBox") %>
<input type="submit" value="Select Mission" /></p>
<% } %>
</div>
(and refactor the method in the controller so that it's argument is textBox instead of dropDown).
My question is why does the AJAX form work for an Html.TextBox, but not for an Html.DropDownList, or what am I doing wrong? My only idea is that maybe the argument in the controller is not supposed to be of type string when using a DropDownList, but this is really just a guess. Thanks in advance.