我有一个强类型视图,它的模型是一个列表。我想知道为什么我不能在控制器动作中恢复模型?
我在表单提交控件上观察到的断点开始起作用但列表为空。
以下是我的观点:
@model List<BL.Model.Speaker>
@using (Html.BeginForm())
{
<table>
@{
foreach (var speaker in Model)
{
<tr>
<td>@Html.EditorFor(s => speaker.Name)</td>
<td>@Html.EditorFor(s => speaker.Email)</td>
</tr>
}
}
</table>
@Html.ActionLink("Submit", "All");
}
我的控制器操作如下:
public ActionResult All(List<Speaker> model)
{
List<Speaker> speakers = database.Speakers.ToList();
return View(speakers);
}
MVC冠军请帮助我。我想要做的是在编辑之后,想要查看我的帖子操作的更新值。
很赞赏你的帮助。
由于
答案 0 :(得分:2)
创建一个扬声器列表ViewModel,然后使用ViewModel代替在视图中使用foreach,如下所示:
<强>视图模型强>
public class SpeakerViewModel
{
public List<Speaker> Speakers { get; set; }
}
查看强>
@model Demo.Models.SpeakerViewModel
@using (Html.BeginForm())
{
<table>
@for (int i = 0; i < Model.Speakers.Count; i++)
{
<tr>
<td>@Html.EditorFor(m => m.Speakers[i].Name)</td>
<td>@Html.EditorFor(m => m.Speakers[i].Email)</td>
</tr>
}
</table>
<input type="submit" value="Submit"/>
}
<强>动作强>
[HttpGet]
public ActionResult All()
{
var model = new SpeakerViewModel()
{
Speakers = database.Speakers.ToList();
};
return View(model);
}
[HttpPost]
public ActionResult All(SpeakerViewModel model)
{
if (ModelState.IsValid)
{
//
}
return View(model);
}