我有一个要在View上修改的对象列表,我已经构建了一个View Model来包含对象列表:
public class TrainerListViewModel
{
public List<Trainer> Trainers { get; set; }
}
我从控制器向视图发送了一个培训师列表:
public virtual ActionResult Social()
{
var Trainers = new TrainerListViewModel();
Trainers.Trainers = (from t in _db.Trainers select t).ToList();
return View(Trainers);
}
这是我的观点:
@model XStreamingFitness.ViewModels.TrainerListViewModel
@using (Html.BeginForm("Social", "Participant", FormMethod.Post))
{
for (int i = 0; i < Model.Trainers.Count; i++)
{
<div class="formSep">
<div class="editor-label">
@Html.LabelFor(m => m.Trainers[i].permissionPostFacebook)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.Trainers[i].permissionPostFacebook)
@Html.ValidationMessageFor(m => m.Trainers[i].permissionPostFacebook)
</div>
</div>
}
<input type="submit" value="Save Settings" name="Submit" />
}
现在这里是POST控制器方法:
[HttpPost]
public virtual ActionResult Social(TrainerListViewModel Trainers)
{
return RedirectToAction("Profile");
}
但每次提交时,培训师模型都是空的,我不确定为什么会发生这种情况。
答案 0 :(得分:1)
此问题已经在此之前提出过,我建议您查看mvc3 submit model empty,它与您遇到的问题具有相同的原则。
请参阅帖子中的摘录。
我看到人们编写以下lambda表达式modelItem =&gt; item.SomeProperty在他们的视图中非常经常地询问模型的原因 binder未正确绑定其视图上的集合属性 模型。
这不会为复选框生成正确的名称,因此默认为 model binder能够重新创建Settings集合。我会 建议您阅读以下blog post以更好地理解 模型绑定器期望的格式正确。
- 作者Darin Dimitrov
这与您构建表单的方式有关,他建议您使用属性编辑器模板作为Trainer对象。
这应该可行。
希望有所帮助