views:

79

answers:

0

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 print out the selected option from the DropDownList, as expected. 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 its 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.