我不能在此上使用一个List<album>
,仅在查看whitout编辑标签时,我有一个视图正常工作,但我无法编辑它们的一个列表。
@model IEnumerable<MyMixtapezServerCodeHomePage.Models.album>
@using (Html.BeginForm("FeatureSystem", "album", FormMethod.Post))
{
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.name)
</th>
<th>
@Html.DisplayNameFor(model => model.feature)
</th>
<th>
@Html.DisplayNameFor(model => model.feature_order)
</th>
<th></th>
</tr>
@foreach (var item in @Model)
{
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => item.name)
</div>
<div class="editor-field">
@Html.EditorFor(model => item.name,"album")
@Html.ValidationMessageFor(model => item.name)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => item.feature,"album")
</div>
<div class="editor-field">
@Html.EditorFor(model => item.feature)
@Html.ValidationMessageFor(model => item.feature)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => item.feature_order)
</div>
<div class="editor-field">
@Html.EditorFor(model => item.feature_order,"album")
@Html.ValidationMessageFor(model => item.feature_order)
</div>
</td>
<td></td>
</tr>
}
<input type="submit" />
</table>}
CONTROLLER
[HttpPost]
public ActionResult FeatureSystem(IEnumerable<album> albums)
{
foreach (album album in albums)
{
if (ModelState.IsValid)
{
albumRepository.Update(album);
albumRepository.SaveChanges();
}
}
return RedirectToAction("Index");
}
我收到的专辑是空的,为什么?我可以编辑一个列表吗?我只需要这个。
答案 0 :(得分:2)
在视图中使用IList而不是IEnumerable,并用for循环替换foreach循环。
第1步:
使用
@model IList <MyMixtapezServerCodeHomePage.Models.album>
而不是
@model IEnumerable<MyMixtapezServerCodeHomePage.Models.album>
第2步:
使用
@for (var i = 0; i < Model.Count; i++)
而不是
@foreach (var item in @Model)
有关详细信息,请参阅How to pass IEnumerable list to controller in MVC including checkbox state?。
答案 1 :(得分:0)
我相信自从mvc3
以来这没有改变所以要拥有一个可编辑的集合,你必须使用for循环,而不是foreach,或者绑定不起作用。
@for(var i = 0; i < Model.Count; i++)
{
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => Model[i].name)
</div>
<div class="editor-field">
@Html.EditorFor(model => Model[i].name,"album")
@Html.ValidationMessageFor(model => Model[i].name)
</div>
</td>
<td>
...
}
看看this,旧的,但我认为没有过时。