//
        // GET: /StoreManager/Edit/5
 
        public ActionResult Edit(int id)
        {
            var viewModel = new StoreManagerViewModel
            {
                Album = storeDB.Album.Single(a => a.AlbumId == id),
                Genres = storeDB.Genre.ToList(),
                Artists = storeDB.Artist.ToList()
            };
            return View(viewModel);
        }        //
        // POST: /StoreManager/Edit/5        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            Album album = new Album ();
            try
            {
                UpdateModel(album, "Album");     
                // TODO: Add Edit logic here           
                int a = storeDB.SaveChanges();
                return RedirectToAction("Index");
            }
            catch
            {
                var viewModel = new StoreManagerViewModel
                {
                    Album = album,
                    Genres = storeDB.Genre.ToList(),
                    Artists = storeDB.Artist.ToList()
                };
                return View(viewModel);
            }
        }
GET方法没问题,POST方法中storeDB.SaveChanges()执行成功,但是返回值为0.
也就是根本没有修改成功。求大神指点

解决方案 »

  1.   

    首先根据ID得到对应的记录,然后修改该记录,最后提交修改
    Album = storeDB.Album.Single(a => a.AlbumId == id),
    //Alubm.字段1='';
    //Alubm.字段2='';
    storeDB.SaveChanges();
      

  2.   

    试过了,不行。
    我的代码也能获取到alubm对象。该对象有对应的值
      

  3.   

    打段点看看主键ID是不是0
    注意在前台用个HIDDEN存储主键
      

  4.   


    //
            // GET: /StoreManager/Create        public ActionResult Create()
            {
                var viewModel = new StoreManagerViewModel
                {
                    Album = new Album(),
                    Genres = storeDB.Genre.ToList(),
                    Artists = storeDB.Artist.ToList()
                };
                return View(viewModel);
            }         //
            // POST: /StoreManager/Create        [HttpPost]
            public ActionResult Create(FormCollection collection)
            {
                Album album = new Album();
                try
                {
                    // TODO: Add insert logic here
                    UpdateModel(album, "Album");
                    storeDB.AddToAlbum(album);
                    storeDB.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch
                {
                    var viewModel = new StoreManagerViewModel
                    {
                        Album = new Album(),
                        Genres = storeDB.Genre.ToList(),
                        Artists = storeDB.Artist.ToList()
                    };
                    return View(viewModel);
                }
            }新增的代码没问题,证明数据库连接是正常的。
      

  5.   

    public void update(Wjy wjy)
    {
    Wjy updateObject = _db.Wjy.First(c => c.id == wjy.id);
    updateObject.name = wjy.name;
    updateObject.re = wjy.re;
    _db.SaveChanges();
    }用我这种方法更新看看
      

  6.   

    这位大神,目前我是在自学MVC中。以上的代码是参照的别人的教程做出来的。要不你去看看?
    链接是:http://www.cnblogs.com/wenming205/archive/2010/08/11/1797547.html
    这个是第四章了,之前的代码上面有链接。
      

  7.   

    [HttpPost]
      public ActionResult Edit(int id, Album album)  
    如果按照
    Album album = new Album ();
    UpdateModel(album, "Album")相当于新建一个Album,那UpdateModel更新给谁?
      

  8.   

    试都不试。你哪知道呢。LINQ更新写法很多我那种写法最不容易出错
      

  9.   


     Album album = new Album ();
      try
      {
      UpdateModel(album, "Album");   
    }这个地方Update的是一个New的Album。如果你加到Albums里了(storeDB.AddToAlbum(album);),这样就是新增加,否则,你保存怎么可能改变呢?
    下面是我更改用户角色时,使用的
               
    var album = this.storeDB.Albums.Find(id);
    UpdateModel(album, "Album");  
    this.storeDB.SaveChanges();
      

  10.   


    Album album = new Album ();
                try
                {
                    // TODO: Add Edit logic here   
                    album = this.storeDB.Album.Single(a => a.AlbumId == id);
                    UpdateModel(album, "Album");
                    this.storeDB.SaveChanges();                int count = storeDB.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch
                {
                    var viewModel = new StoreManagerViewModel
                    {
                        Album = album,
                        Genres = storeDB.Genre.ToList(),
                        Artists = storeDB.Artist.ToList()
                    };
                    return View(viewModel);
                }语法有点问题,我改了。你的方法是对的。谢谢