我有一个Model本质上是一个对象,它包含一个包含三个数字字段和一个字符串字段的对象列表,类似于以下内容:
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; }
}
视图有一个表格,允许用户设置每个项目的Value
和Comment
字段(ID
由数据层和IntegerValue
生成源自Value
)。用户可以使用jQuery post()
方法通过AJAX添加和删除集合中的项目,并使用html()
部分更新网页。
我看到的问题是,如果我有一个评论/价值对列表,如下:
Item 1, 1.00
Item 2, 2.00
Item 3, 3.00
Item 4, 4.00
Item 5, 5.00
我通过网页删除第三项,Controller正确地将数据更改为:
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的div
方法放置在html()
内
更新:我已经完成了一些调试,并设法消除了对PartialView()
的错误调用;它肯定会返回正确形成的PartialViewResult
。
答案 0 :(得分:0)
似乎我可以通过在Controller方法的开头调用ModelState.Clear()
来修复整个shebang。我不知道它为什么会起作用,我所知道的只是添加一行解决了这个问题。