Ich poste ein sehr einfaches Formular mit einer Methode, die ich häufig in der Vergangenheit verwendet habe. Es mag einfacher sein, meinen Code zu zeigen, als eine langwierige Erklärung einzugeben. Hier ist der HTML:FormCollection Empty on Form Post in ASP.NET-MVC
<% 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();%>
Und hier ist der 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());
}
Der Button das Formular abgesendet hat, und das Verfahren wird aufgerufen, aber das Formularobjekt in meinem Parameter definiert ist leer. Ich habe auch Request.Form ausprobiert und bekomme das gleiche Ergebnis. Fehle ich hier etwas?
Ouch eingereicht - das ist, was ich für das Heranwachsen auf WebForms bekommen !! Ich dachte, das ID-Attribut übermittelte die Werte im Formular. Danke für die Antwort!! –
Danke! Ich dachte auch, dass das ID-Attribut es tun würde ... –
Dies ist überraschend, da alles darauf hinweist, nur die ID zu verwenden. Dinge nicht so, wie sie mir schienen .. –