mvc4编辑功能没有任何反应

时间:2013-12-20 09:53:34

标签: asp.net-mvc asp.net-mvc-4

我在mvc4中编辑时遇到问题。在控制器中我添加了这段代码:

public ActionResult Edit(int id)
    {
        using (var db = new MainDatabaseEntities())
        {
            var data = db.ANIME.Where(s => s.ID_AN == id).Select(c => new { ID_AN = c.ID_AN, TITLE_OR = c.TITLE_OR, TITLE_EN = c.TITLE_EN, GENRES = c.GENRES}).ToList().Select(s => new
            {
                ViewModel = new ANIME
                {
                    ID_AN = s.ID_AN,
                    TITLE_OR = s.TITLE_OR,
                    TITLE_EN = s.TITLE_EN,
                },
                GENREID = s.GENRES.Select(c => c.ID_GE),
            }).SingleOrDefault();

            if (data == null)
                return HttpNotFound();

            data.ViewModel.GENRES = db.GENRES.Select(c => new { ID_GE = c.ID_GE, GENRE = c.GENRE}).ToList().Select(c => new GENRES
                {
                    ID_GE = c.ID_GE,
                    GENRE = c.GENRE
                }).ToList();

            foreach (var c in data.ViewModel.GENRES)
                c.isSelected = data.GENREID.Contains(c.ID_GE);
            return View(data.ViewModel);
        }
    }

    [HttpPost]
    public ActionResult Edit(ANIME anime)
    {
        var db = new MainDatabaseEntities();
        var editanime = db.ANIME.Include("GENRES").FirstOrDefault(a => a.ID_AN == anime.ID_AN);

        if (editanime == null)
        { 
            editanime.GENRES = anime.GENRES;
        }
        foreach (var genre in anime.GENRES)
        {
            if (genre.isSelected)
            {
                if (!editanime.GENRES.Any(c => c.ID_GE == genre.ID_GE))
                {
                    var addedgenre = new GENRES { ID_GE = genre.ID_GE };
                    db.GENRES.Attach(addedgenre);
                    editanime.GENRES.Add(addedgenre);
                }
            }
            else
            {
                var removedgenre = editanime.GENRES.SingleOrDefault(c => c.ID_GE == genre.ID_GE);
                if (removedgenre != null)
                    editanime.GENRES.Remove(removedgenre);
            }
        }

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

当我使用复选框编辑流派时会保存,但如果我更改TITLE_OR或TITLE_EN则没有任何反应。我尝试添加db.Entry(anime).State = EntityState.Modified;,但后来收到错误:An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.有什么方法可以解决这个问题吗?

编辑:我仍然有这个问题; _;。我试图添加AsNoTracking()但是类型不会保存。请帮忙......

0 个答案:

没有答案