有人能帮我解决这个问题吗?我想传递ienumerable或者是我的自定义视图模型的简单列表给控制器。这是我的代码:
@model IEnumerable<WebWareApp.ViewModels.OstukorvVM>
@{
ViewBag.Title = "Ostukorv";
}
<h2>Hetkel ostukorvis olevad tooted:</h2>
@using (Html.BeginForm("Create", "ToodeTellimuses"))
{ @Html.AntiForgeryToken()
<table>
<tr>
<th>Tootenimi</th>
<th>Tootegrupp</th>
<th>Tootja</th>
<th>Mõõdud</th>
<th>Varvus</th>
<th>Hind</th>
<th>Vali Kogus</th>
<th></th>
</tr>
@{if (Model != null)
{
foreach (var item in Model)
{<tr>
<td>
@Html.DisplayFor(modelitem => item.Toode.Nimi)
@Html.HiddenFor(modelitem => item.Toode.Nimi)
</td>
<td>
@Html.DisplayFor(modelitem => item.Toode.Tootegrupp.Nimetus)
@Html.HiddenFor(modelitem => item.Toode.Tootegrupp.Nimetus)
</td>
<td>
@Html.DisplayFor(modelitem => item.Toode.Tootja)
@Html.HiddenFor(modelitem => item.Toode.Tootja)
</td>
<td>
@Html.DisplayFor(modelitem => item.Toode.Pikkus) x @Html.DisplayFor(modelitem => item.Toode.Laius) x @Html.DisplayFor(modelitem => item.Toode.Korgus)
@Html.HiddenFor(modelitem => item.Toode.Pikkus) @Html.HiddenFor(modelitem => item.Toode.Laius) @Html.HiddenFor(modelitem => item.Toode.Korgus)
</td>
<td>
@Html.DisplayFor(modelitem => item.Toode.Varvus)
@Html.HiddenFor(modelitem => item.Toode.Varvus)
</td>
<td>
@Html.DisplayFor(modelitem => item.Toode.Hind)
@Html.HiddenFor(modelitem => item.Toode.Hind)
</td>
<td>
@Html.EditorFor(modelitem => item.kogus)
</td>
<td>
@String.Format("Laos olemas {0}",item.Toode.Kogus)
@Html.HiddenFor(modelitem => item.Toode.Kogus)
</td>
</tr>
}
}}
</table>
<input type="submit" value="Telli">
}
但问题是,在我的控制器,当我调试传入的模型字段总是空。如果有必要,我可以张贴我的视图模型和模型和控制器到这里。
将foreach
循环替换为for
循环就可以了。
for (var i = 0; i < Model.Count; i++) {
@Html.HiddenFor(m => Model[i].Toode.Value)
}
我理解你的问题,你的意思是你得到@ modelienumerable是null,对吗?
则确保在从控制器返回列表之前检查是否为空然后像这样返回
if (db.OstukorvVMs != null && db.OstukorvVMs.Count() > 0)
{
return View(db.OstukorvVMs.ToList());
}
return View();
让我知道你的反馈,如果它将工作
好的,我明白了。
请尝试将您的模型数据转换为IEnumerator<WebWareApp.ViewModels.OstukorvVM>
类型。
IEnumerator<WebWareApp.ViewModels.OstukorvVM> ienut = model.GetEnumerator();
While(ienut.MoveNext())
{
///what ever you want to do
console.WriteLine(ienumerator.Current.ToString());
}
在之后,你仍然可以得到所有的值进入模型,这一次将不再是空了。请发送反馈