zoukankan      html  css  js  c++  java
  • musicstore edit方法出错的原因和解决方法

                     今天来翻,发现已经浏览到(500)800了,我说来过的哥们,这篇对你们有帮助吗,它有问题吗?请发表下!谢谢!

    这个问题的源头是

    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")]呢,出于安全考虑。

  • 相关阅读:
    抽丝剥茧设计模式- 责任链模式应用场景
    抽丝剥茧设计模式-工厂和抽象工厂模式
    抽丝剥茧设计模式-你真的懂单例模式吗?
    抽丝剥茧设计模式- 啰嗦几句
    生产环境ng配置
    Linux命令
    内容过滤报错
    user 报错
    cxlabel 显示不全的解决方法
    关于SQL事务的一些坑
  • 原文地址:https://www.cnblogs.com/wusong/p/2958180.html
Copyright © 2011-2022 走看看