当我在MVC的ModelState中使用Ajax更新数据库时

阳光明媚的

当用户单击索引视图中的复选框时,我将更新数据库,这是我的查看代码(在视图中将DispalyFor更改为CheckBoxFor)

@Html.CheckBoxFor(modelItem => item.Active, new
   {
       data_url = Url.Action("Subscribe", "Home"),
       data_id = item.Id,
   })

并在ajax中写这个

<script>
    $(function() {
        //var id, Active;
        $('#item_Active').change(function () {
            var ch = $(this).is(":checked");

            var data = { 'id': $(this).data('id'), 'Active': ch };

            //data[$(this).attr('name')] = $(this).is(':checked');
            $.ajax({
                url: $(this).data('url'),
                type: 'POST',
                data: data,
                success: function() {
                    alert("Ok");
                },
                error: function(e) {
                    alert(e.toString());
                }
            });
        });
    });

</script>

而我的控制器处于“家庭动作”中

  [HttpPost]
    public ActionResult Subscribe([Bind(Include = "id,Active")]Subscribe subscribe)
    {

        if (ModelState.IsValid)
        {
            var sub = db.Subscribes.FirstOrDefault(x => x.Id == subscribe.Id);
           db.Entry(subscribe).State = EntityState.Modified;

                db.SaveChanges();
           }
        return RedirectToAction("Index");
    }

当单击我的复选框时出现此错误

System.InvalidOperationException: Attaching an entity of type '' failed because another entity of the same type already has the same primary key value. This can happen when using the 'Attach' method or setting the state of an entity to 'Unchanged' or 'Modified' if any entities in the graph have conflicting key values. This may be because some entities are new and have not yet received database-generated key values. In this case use the 'Add' method or the 'Added' entity state to track the graph and then set the state of non-new entities to 'Unchanged' or 'Modified' as appropriate.
塔赫·拉古伊(Taher Rahgooy)

从数据库加载实体时,EF会跟踪该实体的所有更改。问题是您想让EF跟踪该类型的另一个实例(subscribe在您的情况下),而该实例Id实例完全相同sub在您的情况下)。

由于EF通过其Ids识别对象,因此不能有两个具有相同类型的实例Id因此,一种可能的方法是只修改旧的方法:

var sub = db.Subscribes.FirstOrDefault(x => x.Id == subscribe.Id);
sub.Active = subscribe.Active;
db.SaveChanges();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我在MVC的ModelState中使用Ajax更新数据库时

来自分类Dev

当我尝试从实体框架MVC更新记录时,为什么从数据库中删除了我的记录?

来自分类Dev

在Django中使用AJAX更新数据库

来自分类Dev

无法在Codeigniter中使用Ajax更新数据库

来自分类Dev

在Rails中使用Ajax请求更新数据库

来自分类Dev

每当我更新gridview时如何将今天的日期更新到数据库

来自分类Dev

当我更新数据库时,插入..... vb.net时不会插入信息。

来自分类Dev

当我尝试使用此函数从我的数据库获取数据时出现错误(我在 android studio 中使用 kotlin)

来自分类Dev

当我通过EF Core更新数据库时,创建唯一索引重复键

来自分类Dev

当我尝试更新表时从数据库中获取错误消息

来自分类Dev

当我更新数据库中的用户文档时,流星用户注销

来自分类Dev

当我提交按钮 HTML/PHP 时更新数据库

来自分类Dev

说更新成功,但当我查看数据库时,它不是

来自分类Dev

如何在ASP.NET MVC 4中使用ViewModel(IEnumerable)更新我的数据库

来自分类Dev

当我从数据库中删除一个项目并更新数据网格时,我仍然看到这个对象

来自分类Dev

当我插入数据库时出现SqlException错误

来自分类Dev

使用AJAX表单更新数据库

来自分类Dev

当我使用PowerBuilder测试数据库连接时出现错误消息

来自分类Dev

当我用EF6查询数据库时,使用LINQ有什么优势?

来自分类Dev

当我尝试使用MySQLi连接到数据库时PHP退出

来自分类Dev

当我使用C#在数据库中有相同记录时返回false

来自分类Dev

当我从另一个表单更新数据库时更新主菜单 DataGridView

来自分类Dev

当我尝试写入或更新到SQLite数据库时,我的通讯录应用程序停止

来自分类Dev

当我编辑一个单元格并按 ENTER 时,我想更新数据库

来自分类Dev

当我想在ASP.NET MVC中编辑数据库时,该值为null

来自分类Dev

我如何使用AJAX在用户输入文本后更新我的数据库?

来自分类Dev

当我在类中更改Object的字段时,Spring / Hibernate会自动更新数据库

来自分类Dev

操作数类型冲突:当我尝试更新数据库时,int与日期不兼容

来自分类Dev

当我使用get api时,我想使用数据库中的字段作为下拉列表

Related 相关文章

  1. 1

    当我在MVC的ModelState中使用Ajax更新数据库时

  2. 2

    当我尝试从实体框架MVC更新记录时,为什么从数据库中删除了我的记录?

  3. 3

    在Django中使用AJAX更新数据库

  4. 4

    无法在Codeigniter中使用Ajax更新数据库

  5. 5

    在Rails中使用Ajax请求更新数据库

  6. 6

    每当我更新gridview时如何将今天的日期更新到数据库

  7. 7

    当我更新数据库时,插入..... vb.net时不会插入信息。

  8. 8

    当我尝试使用此函数从我的数据库获取数据时出现错误(我在 android studio 中使用 kotlin)

  9. 9

    当我通过EF Core更新数据库时,创建唯一索引重复键

  10. 10

    当我尝试更新表时从数据库中获取错误消息

  11. 11

    当我更新数据库中的用户文档时,流星用户注销

  12. 12

    当我提交按钮 HTML/PHP 时更新数据库

  13. 13

    说更新成功,但当我查看数据库时,它不是

  14. 14

    如何在ASP.NET MVC 4中使用ViewModel(IEnumerable)更新我的数据库

  15. 15

    当我从数据库中删除一个项目并更新数据网格时,我仍然看到这个对象

  16. 16

    当我插入数据库时出现SqlException错误

  17. 17

    使用AJAX表单更新数据库

  18. 18

    当我使用PowerBuilder测试数据库连接时出现错误消息

  19. 19

    当我用EF6查询数据库时,使用LINQ有什么优势?

  20. 20

    当我尝试使用MySQLi连接到数据库时PHP退出

  21. 21

    当我使用C#在数据库中有相同记录时返回false

  22. 22

    当我从另一个表单更新数据库时更新主菜单 DataGridView

  23. 23

    当我尝试写入或更新到SQLite数据库时,我的通讯录应用程序停止

  24. 24

    当我编辑一个单元格并按 ENTER 时,我想更新数据库

  25. 25

    当我想在ASP.NET MVC中编辑数据库时,该值为null

  26. 26

    我如何使用AJAX在用户输入文本后更新我的数据库?

  27. 27

    当我在类中更改Object的字段时,Spring / Hibernate会自动更新数据库

  28. 28

    操作数类型冲突:当我尝试更新数据库时,int与日期不兼容

  29. 29

    当我使用get api时,我想使用数据库中的字段作为下拉列表

热门标签

归档