C# 如何在模型中使用for循环?
我试图在模型上使用for循环(而不是foreach),但当我在“Model”后面加上点时,没有显示任何模型属性。你知道为什么吗C# 如何在模型中使用for循环?,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在模型上使用for循环(而不是foreach),但当我在“Model”后面加上点时,没有显示任何模型属性。你知道为什么吗 @model IEnumerable<JPK.Models.DocumentsModel> @using (Html.BeginForm("Update", "Home", FormMethod.Post)) { @for (var i = 0; i < Model.Count(); i++) {
@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>
}
}
@model IEnumerable
@使用(Html.BeginForm(“更新”、“主页”、FormMethod.Post))
{
@对于(var i=0;iModel[i].Account)//在这里,在Model之后,它不起作用。没有属性apppear
@DisplayFor(modeleItem=>Model[i].Account)//此处相同
}
}
尝试在lambda中使用'model'参数,而不是页面的'model'对象:
@Html.HiddenFor(model => model[i].Account)
尝试在lambda中使用'model'参数,而不是页面的'model'对象:
@Html.HiddenFor(model => model[i].Account)
试试这个:
@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>
}
您仍然可以使用foreach运算符,或者如果您想使用索引,请将count更改为length:
@for (var i = 0; i < Model.Length; i++)
试试这个:
@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>
}
您仍然可以使用foreach运算符,或者如果您想使用索引,请将count更改为length:
@for (var i = 0; i < Model.Length; i++)
如果要在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 counter=0}
@foreach(模型中的var modelItem)
{
@Html.HiddenFor(modeleItem=>modeleItem.Account)//它在这里不起作用,在Model之后。没有属性
@DisplayFor(modeleItem=>modeleItem.Account)//此处相同
@柜台++
}
或者您可以使用var index=Model.IndexOf(modeleItem)如果您想在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 counter=0}
@foreach(模型中的var modelItem)
{
@Html.HiddenFor(modeleItem=>modeleItem.Account)//它在这里不起作用,在Model之后。没有属性
@DisplayFor(modeleItem=>modeleItem.Account)//此处相同
@柜台++
}
或者您可以使用var index=Model.IndexOf(modelItem)它仍然显示错误,它表明您不能为IEnumerableit使用索引,它仍然显示错误,它表明您不能为IEnumerableIEnumerable使用索引,它不支持索引。使用IList或foreach@HansKe是的,你是对的。问题是,我需要通过单击“保存”按钮(按钮位于同一行)将值从第75行(在“帐户”列中)传递给控制器。这就是为什么我需要使用。不管怎样,我使用了“for”循环,但它不起作用。返回给控制器的值为空。我真的不知道为什么Enumerable不支持索引。使用IList或foreach@HansKe是的,你是对的。问题是,我需要通过单击“保存”按钮(按钮位于同一行)将值从第75行(在“帐户”列中)传递给控制器。这就是为什么我需要使用。不管怎样,我使用了“for”循环,但它不起作用。返回给控制器的值为空。我真的不知道为什么会这样。是的,我以前试过。问题是我需要将这些字段的值传递给控制器。我有大约100行的值。我需要传递给定行中的值(此行中还有“保存”按钮,它将值从该字段传递给控制器)。不幸的是,上面显示的方法returnnulli增加了一种方法,如果出于某种原因需要索引,可以使用它们。请检查我编辑的答案。遗憾的是,“模型”的长度属性不可用。只算数。我使用MVC 5,如果是这样的情况(.NET Framework 4.7),您必须在GET操作中更改阵列模型,以创建此表单,而不是在POSTIn更新操作中更改更新(DocumentsModel docs)以更新(DocumentsModel[]docs),或者如果您仍要使用IEnumerable,则将DocumentsModel更改为IEnumerableYes,我以前试过这个。问题是我需要将这些字段中的值传递给控制器。我有大约100行的值。我需要传递给定行中的值(此行中还有“保存”按钮,它将值从该字段传递给控制器)。不幸的是,上面显示的方法returnnulli增加了一种方法,如果出于某种原因需要索引,可以使用它们。请检查我编辑的答案。遗憾的是,“模型”的长度属性不可用。只算数。我使用MVC 5,如果是这样的情况(.NET Framework 4.7),您必须在GET操作中更改阵列模型,以创建此表单,而不是在POSTIn更新操作中更改更新(DocumentsModel docs)以更新(DocumentsModel[]docs),或者如果您仍然要使用IEnumerable,则将DocumentsModel更改为IEnumerableOk,我使用了这种代码。不幸的是,来自Account字段的值(我使用了如上所示的“hidden for”)并没有传递给controller。它仍然是空的。您知道问题出在哪里吗?我想您的控制器可能出了问题,post方法是什么样子的?它看起来像:
public ActionResult Update(documents model docs){//some code return RedirectToAction(“Index”);}
当我将鼠标悬停在“docs”上时,我会看到对象属性上到处都是null。当然[HttpPost]
在这个控制器上,我使用了这种代码。不幸的是,来自Account字段的值(我使用了如上所示的“hidden for”)并没有传递给controller。它仍然是空的。您知道问题出在哪里吗?我想您的控制器可能出了问题,post方法是什么样子的?它看起来像:public ActionResult Update(documents model docs){//some code return RedirectToAction(“Index”);}
当我将鼠标悬停在“docs”上时,我会看到对象属性上到处都是空值,当然[HttpPost]
位于该控制器上方