• 存储区更新、插入或删除语句影响到了意外的行数(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")]呢,出于安全考虑。

  • 相关阅读:
    wpf 命令
    wpf 事件
    wpf 依赖属性介绍
    wpf binging (六)多绑定
    ISI的晶圆级MRAM测试仪
    常见存储器分类
    存储器SDRAM简要历史
    当前MRAM市场以及专用MRAM设备测试的重要性
    IPUS SQPI PSRAM为STM32单片机提供RAM扩展方案
    单端口SRAM与双端口SRAM电路结构
  • 原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/3687223.html
Copyright © 2020-2023  润新知