C# 如何在表单中呈现列表项?

C# 如何在表单中呈现列表项?,c#,asp.net-mvc,forms,asp.net-mvc-4,razor,C#,Asp.net Mvc,Forms,Asp.net Mvc 4,Razor,我有一个小问题,似乎无法使用MVC4可靠地呈现表单中的列表项。下面是出现问题的一小段代码: ... @{int count = Model.Details.Count;} @for (int i = 0; i < count; i++) { <tr class="added-item"> <td> @Html.EditorFor(x => Model.Details[i].WidthFeet)

我有一个小问题,似乎无法使用MVC4可靠地呈现表单中的列表项。下面是出现问题的一小段代码:

  ...
  @{int count = Model.Details.Count;}
  @for (int i = 0; i < count; i++)
  {
    <tr class="added-item">
      <td>
        @Html.EditorFor(x => Model.Details[i].WidthFeet)
        @Html.EditorFor(x => Model.Details[i].WidthInches)
      </td>
  ...
。。。
@{int count=Model.Details.count;}
@for(int i=0;iModel.Details[i].WidthFeet)
@EditorFor(x=>Model.Details[i].WidthInches)
...
基本上,我正在进行循环,并在进行过程中添加行。我已经手动完成了这个过程,我已经确认使用了正确的索引/数据,并且我已经确认HTML在名称方面是正确的(正确的索引,等等)尽管有这些事实,但我遇到的问题是,所有输入框中的值逐行都是相同的。基本上,如果我更改其中一个字段,当表单再次呈现时,该值将显示在所有其他行中


有人能告诉我发生了什么事,或者我如何解决这个问题吗?

我想你应该使用foreach:

@foreach (var Item in Model.Details)
{
    @Html.EditorFor(x => Item.WidthFeet)
    @Html.EditorFor(x => Item.WidthInches)
}

您好,您能试试下面的吗?它对我有效。如果它仍然加载相同的数据,请查看您的模型数据是否正在提取重复数据

**@for (int count = 0; count < Model.Details.Count; count++)
            {
            <tr class="added-item">
                <td>
            @Html.EditorFor(m => m.Details[count].WidthFeet)
            @Html.EditorFor(m => m.Details[count].WidthInches)
                </td>
            </tr>
            }**
**@for(int count=0;countm.Details[count].WidthFeet)
@Html.EditorFor(m=>m.Details[count].WidthInches)
}**

尝试替换编辑器for to textbox for不确定这是否与问题有关,但是
x=>Model.Details[i]
看起来有点奇怪。不会
x=>x.Details[i]
更自然?@Andrei绝对没有关系。两种形式都一样自然/相同。如果这样做,索引将不正确,您将无法提交数据。