FormCollection Empty on Form Post in ASP.NET-MVC


I am posting a very simple form using a method I have used frequently in the past. It may be easier to show my code rather than type a lengthy explanation. Here's the HTML:

<% Html.BeginForm("CreateMarketingType", "ListMaintenance"); %>
    <div id="ListMaintenanceContainer">
                <th>Marketing Type Id</th>
                <th>Marketing Type Name</th>
                <%foreach (MarketingType marketingType in ViewData.Model.MarketingTypes) %>
                <%{ %>
                        <td><%= marketingType.MarketingTypeId.ToString() %></td>
                        <td><%= marketingType.MarketingTypeName %></td>
                <%} %>
            <fieldset id="fsSaveNewMarketingType">
                <legend>Add New Marketing Type</legend>
                <label for="txtNewMarketingTypeName">New Marketing Type Name:</label>
                <input type="text" id="txtNewMarketingTypeName" />
                <input type="submit" value="Save" id="CreateMarketingType" />
<% Html.EndForm();%>

And here's the controller code:

public ActionResult CreateMarketingType(FormCollection form)
    string newMarketingTypeName = Request.Form["txtNewMarketingTypeName"].ToString();

    MarketingType newMarketingType = new MarketingType() { MarketingTypeName = newMarketingTypeName };


    return View("ListMaintenance", GetModel());

The submit button posts the form, and the method is invoked, but the form object defined in my parameter is empty. I have also tried Request.Form and I get the same result. Am I missing something here?

2/2/2009 8:12:24 PM

Accepted Answer

None of your inputs have a name attribute. No name = not in the FormCollection.

2/2/2009 8:24:45 PM

I had this issue and then realised I had disabled all the INPUT controls before I submitted the form (as a UX feature).

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow