微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在模型中使用for循环?

如何解决如何在模型中使用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 举报,一经查实,本站将立刻删除。