难以理解的MVC模型数据更改

时间:2014-09-19 09:08:39

标签: javascript jquery asp.net ajax asp.net-mvc

我有一个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; }
}

视图有一个表格,允许用户设置每个项目的ValueComment字段(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

1 个答案:

答案 0 :(得分:0)

似乎我可以通过在Controller方法的开头调用ModelState.Clear()来修复整个shebang。我不知道它为什么会起作用,我所知道的只是添加一行解决了这个问题。