如何在ASP.NET MVC4中正确进行编辑操作?

时间:2014-04-25 21:13:10

标签: c# asp.net-mvc asp.net-mvc-4

我正在尝试以这种方式进行更新:

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Modifier(OSModel os)
        {    
            if (ModelState.IsValid)
            {
                _db.Entry(os).State = EntityState.Modified;

                // success !
                string str = "o";
                return RedirectToAction("Index", new { str = str });
            }

            // fail !
            return View(os);
        }

使用此更新操作系统行后,该行不会更新。这有什么问题?

OSModel

[Table("OS")]
public class OSModel
{
    [Key]
    public int idOS { get; set; }

    [Required]
    public string nameOS { get; set; }

    [Required]
    public string versionOS { get; set; }

    [Required]
    public string editionOS { get; set; }

    [Required]
    public string servicepackOS { get; set; }

    [Required]
    public int bitsOS { get; set; }

    public OSModel(){}
}

知道在调试模式下,我得到idOS的输入操作系统的完整数据,设置为0。

1 个答案:

答案 0 :(得分:0)

你必须在_db.SaveChanges()之后添加_dn.Entry(os).State=...,以便在数据库中保存更改 试试这个:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Modifier(OSModel os)
    {    
        if (ModelState.IsValid)
        {

            _db.Entry(os).State = EntityState.Modified;
            _db.SaveChanges();// you must add this line
            // success !
            string str = "o";
            return RedirectToAction("Index", new { str = str });
        }

        // fail !
        return View(os);
    }