2013-12-10 70 views
0

我的ASP.NET MVC應用程序並非反序列化整個列表,而只是6個筆記,給出了下面的刪節例子。這可能是什麼原因?在頁面上,我看到正確的結果數量。asp.net mvc不反序列化整個子列表

[HttpGet] 
public ActionResult Notes() { 
    var viewModel = new NotesViewModel(); 
    viewModel.Notes = GetNotes(); // returns 50+ notes, displaying as expected 
    return View(viewModel); 
} 

[HttpPost] 
public ActionResult Notes(NotesViewModel viewModel) { 
    // viewModel.Notes only has 6 notes, but 50+ were passed to the view above 
} 

public class NotesViewModel { 
    public List<Note> Notes { get; set; } 
} 

public class Note { 
    public long Id { get; set; } 
    public string Text { get; set; } 
} 

<table> 
@for (int i = 0;i < Model.Notes.Count;i++) {         
    var note = Model.Notes[i]; 
    <tr> 
     <td>@note.Id</td> 
     <td>@Html.TextBoxFor(m => m.Notes[i].Text)</td>                     
    </tr> 
}  
</table> 
<input type="submit" value="Save" /> 
+0

懷疑這將是原因,但你的循環中有一個額外的''。另外,出於好奇,爲什麼你使用'for'循環而不是'foreach'? –

+0

我正在使用for循環,因爲它讓我有每個子元素的索引。我會再次嘗試使用foreach,但這正是我最初使用的。正如你所說,並不重要。我會刪除它。 –

+0

如果您顯示呈現的HTML,它也將有所幫助 –

回答

0

我解決了這個問題。發生這種情況的原因是因爲在Id列表中有一個跳過的數字(故意使用)導致迭代器停止循環。你需要特定的索引列表(foreach不起作用)。

但我有條件地跳過顯示項目,這是在數組索引的連續性中斷。