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"> <table> <tr> <th>Marketing Type Id</th> <th>Marketing Type Name</th> </tr> <%foreach (MarketingType marketingType in ViewData.Model.MarketingTypes) %> <%{ %> <tr> <td><%= marketingType.MarketingTypeId.ToString() %></td> <td><%= marketingType.MarketingTypeName %></td> </tr> <%} %> </table> <div> <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" /> </fieldset> </div> </div> <% Html.EndForm();%>
And here's the controller code:
[AcceptVerbs(HttpVerbs.Post)] public ActionResult CreateMarketingType(FormCollection form) { string newMarketingTypeName = Request.Form["txtNewMarketingTypeName"].ToString(); MarketingType newMarketingType = new MarketingType() { MarketingTypeName = newMarketingTypeName }; _marketingTypeRepository.AddNewMarketingType(newMarketingType); 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?
None of your inputs have a name attribute. No name = not in the FormCollection.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With