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

    在用asp.net MVC3 的MusicStore时候 Edit某个数据项时提示下面的错误:
    存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
     
     

    这个问题的源头是

    1,[Bind(Exclude = "AlbumId")]
    public class Album

    [Bind(Exclude = "AlbumId")]表明bind的时候不会取AlbumId,不管你form里面是否有它。

    2,

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

    导致生成的页面form里面没有包含AlbumId。

    解决办法大概有2个:

    第一步自然是给form加上AlbumId。

    有两个方法:

    1,

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

    2,

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

    第二步得到AlbumId,有两个方法:

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

    2,edit方法如下:

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

    为什么需要设置[Bind(Exclude = "AlbumId")]呢,出于安全考虑。

  • 相关阅读:
    visual sudio开发工具使用小技巧
    JS去除右边的逗号
    下拉标题
    sp_addextendedproperty
    触发器的使用
    缺失一个正数
    组合总和 去重
    拖动 Drag
    n皇后问题
    括号生成
  • 原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/3687223.html
Copyright © 2011-2022 走看看