ich folgendes AnsichtsmodellMVC3 kann nicht an den Controller-Modell zurück
public class RecommendationModel
{
public List<CheckBoxItem> CheckBoxList { get; set; }
}
public class CheckBoxItem
{
public string Text { get; set; }
public bool Checked { get; set; }
public string Link { get; set; }
}
haben mit der folgenden Ansicht
model Sem_App.Models.RecommendationModel
@using (Html.BeginForm())
{
for (int i = 0; i < Model.CheckBoxList.Count(); i++) {
@Html.CheckBoxFor(m => m.CheckBoxList[i].Checked)
@Html.DisplayFor(m => m.CheckBoxList[i].Text)
}
<input type="submit" value="Add To Playlist" />
}
Mit den folgenden Controller-Aktionen
//get
public ActionResult Recommendation()
{
RecommendationModel model = new RecommendationModel();
model.CheckBoxList = new List<CheckBoxItem>();
return PartialView(model);
}
//post
[HttpPost]
public ActionResult Recommendation(RecommendationModel model)
{
foreach (var item in model.CheckBoxList)
{
if (item.Checked)
{
// do something with item.Text
}
}
}
Problem ist, wenn ich einige Elemente auswähle und die Übermittlungsschaltfläche drücke, hat das zurückgegebene Modell CheckBoxList als leer. Wie kann ich meine Ansicht ändern, um die Liste der CheckBoxList zurückzugeben? Der Versuch, @Html.HiddenFor(m => m.checkBoxList)
nicht
nee, das funktioniert! aber jetzt bekomme ich CheckBoxItem.Link und CheckBoxItem.Text Nullen in meinem Controller keine Ahnung warum? Ich habe meinen Controller aktualisiert – user972616
Werfen Sie einen Blick auf den HTML-Code, den "DisplayFor" ausgibt, [diese Methode rendert einen String, der den Eigenschaftswert darstellt.] (Http://msdn.microsoft.com/en-us/library/ee407390%28v = vs.98% 29.aspx) Beim POST des Formulars wird dieser Wert nicht wie andere Formulareingaben (und ausgeblendete Felder) an den Controller gesendet. MVC muss das Modell aus bekannten Daten in diesem Beitrag rekonstruieren ... Denken Sie daran, dass MVC zustandslos ist (Goodbye Viewstate). – felickz