如何检查我的模型是否在视图上发生了变化?

时间:2014-11-12 09:59:22

标签: c# asp.net-mvc performance asp.net-mvc-4

我正在尝试更新项目列表。但我想只更新我视图中已更改的项目。

目前,在我的控制器上我有这段代码

foreach ( var item in items )
{
   update(item);
}

但我需要有类似的东西

foreach ( var item in items )
{
    if(ItemHasChanged(item))
    {
       update(item);
    }
}

我需要这个,因为我不想做任何不必要的更新,这对性能有好处。另外,我不想对数据库进行往返检查,以检查项目是否已更改。

是否可以检查视图是否已更改项目?

我正在使用asp.net mvc 4 ...

2 个答案:

答案 0 :(得分:3)

以下jQuery将完成这项工作。由于在视图中更改了任何输入字段,因此将触发此功能。

$('form :input').on('change input', function () {
    alert('changed'); //Your code..        
});

答案 1 :(得分:1)

也许您可以在将模型发送到视图之前缓存模型。

HttpContext.Current.Session [" OldModel"] = yourModel;

然后将您在POST操作中获得的模型与缓存的模型进行比较。

如果您决定使用JavaScript,我认为您应该考虑用户可以在浏览器上修改或禁用JavaScript。