有人可以帮我解决这个问题。我想将我的自定义视图模型的可依赖或简单列表传递给控制器。我的代码:
@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">
}
但问题是,在我的控制器中,当我调试传入的模型字段时始终为null。如果需要,我也可以将我的viewmodel和模型以及控制器发布到此处。
答案 0 :(得分:1)
用foreach
循环替换for
循环可以解决问题。
for (var i = 0; i < Model.Count; i++) {
@Html.HiddenFor(m => Model[i].Toode.Value)
}
答案 1 :(得分:0)
据我了解你的问题,你的意思是你得到了 @model IEnumerable是空的吗?
然后确保在检查null之前从控制器返回列表 然后像这样返回
if (db.OstukorvVMs != null && db.OstukorvVMs.Count() > 0)
{
return View(db.OstukorvVMs.ToList());
}
return View();
如果有效,请告诉我您的反馈
答案 2 :(得分:0)
好的,我理解。
请尝试将您的模型数据转换为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());
}
之后你仍然可以将所有值都输入到模型中,这次不会再为null。 请发送反馈