如何解决如何在模型中使用for循环?
我试图在模型上使用for循环(而不是foreach),但是当我在'Model'后面加点时,没有显示模型属性。你知道为什么吗?
@model IEnumerable<JPK.Models.DocumentsModel>
@using (Html.BeginForm("Update","Home",FormMethod.Post))
{
@for (var i = 0; i < Model.Count(); i++)
{
<tr>
<td>
@Html.HiddenFor(modelItem => Model[i].Account ) //it doesn't work here,after Model. no properties apppear
@Html.displayFor(modelItem => Model[i].Account) //same here
</td>
<td>
<input type="submit" value="Save" />
</td>
</tr>
}
}
解决方法
尝试一下:
@foreach (var model in Model)
{
<tr>
<td>
@Html.HiddenFor(model=> model.Account ) //it doesn't work here,after Model. no properties apppear
@Html.DisplayFor(model=> model.Account) //same here
</td>
<td>
<input type="submit" value="Save" />
</td>
</tr>
}
或者您可以尝试
@model JPK.Models.DocumentsModel[]
您仍然可以使用foreach运算符,或者如果您想立即使用索引,请将计数更改为长度:
@for (var i = 0; i < Model.Length; i++)
仅在调用控制器中的视图之前,将模型转换为数组。您可以这样转换:
var model=oldModel.ToArray();
return View(model);
,
如果要在For循环中使用它,则必须接受它作为列表。 如果必须使用IEnumerable,则必须使用带有计数器的foreach循环。
类似这样的东西。
@{var counter = 0}
@foreach (var modelItem in Model)
{
<tr>
<td>
@Html.HiddenFor(modelItem => modelItem.Account ) //it doesn't work here,after Model. no properties apppear
@Html.DisplayFor(modelItem => modelItem.Account) //same here
</td>
<td>
<input type="submit" value="Save" />
</td>
@counter++
</tr>
}
或者您可以使用var index = Model.IndexOf(modelItem)
,尝试在lambda中使用“模型”参数,而不是页面的“模型”对象:
@Html.HiddenFor(model => model[i].Account)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。