2013-10-23 41 views
2

我有一個小問題,我似乎無法可靠地呈現使用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> 
    ... 

基本上我正在經歷循環,並添加行,因爲我去。我已經手動地完成了這個過程,並且我已經確認正在使用正確的索引/數據,並且我已經確認HTML就名稱而言是正確的(正確索引等)。儘管有這些事實,但問題仍然存在我所擁有的是所有輸入框中的值在逐行基礎上都是相同的。基本上,如果我在一個字段中更改字段,當表單再次呈現時,該值將顯示在所有其他行中。

任何人都可以告訴我發生了什麼,或者我該如何解決這個問題?

+0

嘗試將EditorFor替換爲TextBoxFor – Fals

+0

不確定這是否與問題有關,但'x => Model.Details [i]'看起來有點奇怪。會不會'x => x.Details [i]'更自然? – Andrei

+0

@Andrei絕對不相關。兩種形式都同樣自然/相同。 –

回答

0

我認爲你應該使用的foreach:

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

如果你這樣做,那麼索引將是不正確的,你將無法提交數據。 –

0

嗨能否請您嘗試以下?它正在爲我工​​作。如果它仍然加載相同的數據,請查看您的模型數據是否正在拖動重複的數據。

**@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> 
      }**