Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在模型中使用for循环?_C#_Asp.net Mvc - Fatal编程技术网

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

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++) {

我试图在模型上使用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>
     }
}
@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]
位于该控制器上方