2014-09-19 53 views
0

我有一個模型,它本質上是包含有三個數值字段和一個字符串字段,類似於以下對象的列表對象:莫名的MVC模型數據改變

public class DataModel 
{ 
    public List<DataItemModel> DataItems { get; set; } 
} 

public class DataModel 
{ 
    public string Comment { get; set; } 
    public decimal Value { get; set; } 
    public int ID { get; set; } 
    public int IntegerValue { get; set; } 
} 

視圖有一個表允許用戶設置每個項目的ValueComment字段(ID由數據層生成,IntegerValueValue派生)。用戶可以使用jQuery post()方法通過AJAX添加和刪除集合中的項目,並使用html()部分更新網頁。

我看到的問題是,如果我有像這樣的評論/值對的列表:

Item 1, 1.00 
Item 2, 2.00 
Item 3, 3.00 
Item 4, 4.00 
Item 5, 5.00 

我刪除通過網頁中的第三項,控制器正確的數據更改爲:

Item 1, 1.00 
Item 2, 2.00 
Item 4, 4.00 
Item 5, 5.00 

並使用PartialView()返回新的HTML。但是,當網頁被更新,該模型以某種方式轉化爲:

Item 1, 1.00 
Item 2, 2.00 
Item 3, 3.00 
Item 4, 4.00 

我一直在使用VS2013的調試器和Firefox瀏覽器的網絡數據包分析器的事情證實了這一點,但在不知如何或爲何出現這種情況是完全。我不認爲這是一個緩存問題,因爲jQuery文檔說post()從來沒有按定義緩存。我想這跟他打電話給PartialView()有什麼關係?

編輯:有問題的(局部的)視圖是一個簡單的HTML形式,這是使用jQuery的html()方法置於div內部內的表。

更新:我已經做了一些更多的調試,並設法消除PartialView()有問題的電話;它肯定會返回一個正確形成的PartialViewResult

+0

我們可以看看你的'View'的相關部分嗎? – 2014-09-19 09:11:48

+0

指數通常是基於零的,所以第三項是'2'而不是'3'。請添加相關的刪除JavaScript和C#代碼。 – Kami 2014-09-19 09:30:14

+0

我已驗證我已通過正確的索引,所以我知道這不是問題 – RaceProUK 2014-09-19 09:33:50

回答

0

看來我可以通過在Controller方法開始時調用ModelState.Clear()來修復整個shebang。我不知道它爲什麼起作用,我只知道增加了一條線已經解決了這個問題。