MVC自我学起之MVCMusic开发中遇到问题:musicstore edit方法出错的原因和解决方法

错误提示:

存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。

解决案:

1.在view中或model中增加隐藏id 

1.1 修改model

[HiddenInput()]
public int AlbumId { get; set; }

1.2在视图中增加:(一般 若是用自动新建的curd中会自带)

@Html.HiddenFor(model => model.AlbumId)

2.得到id也有两种方法一种是修改model另一种根据id得到实体后修改edit方法; 如下所示:

2.1修改model

去掉[Bind(Exclude = "AlbumId")]

2.2修改edit方法:

[HttpPost]
public ActionResult Edit(int albumid, FormCollection formData)
{
var album = db.Albums.Find(albumid);
if (ModelState.IsValid)
{
UpdateModel<Album>(album, formData);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
ViewBag.ArtistId = new SelectList(db.Artist, "ArtistId", "Name", album.ArtistId);
return View(album);
}

此解决方案出处:http://www.cnblogs.com/wusong/archive/2013/03/13/2958180.html

原文地址:https://www.cnblogs.com/Strive-fighting/p/3876748.html