问题描述
我想更新我数据库中的值。为了确保我的脚本正常工作并发送值,我创建了一个 POST 方法来检查并且值即将到来。
我现在的问题是随着传入方法的值,如何在数据库中更新或保存我的值?
控制器:
[HttpPost]
public JsonResult EditPost(Programa_Cor_Info_Status statusData)
{
Programa_Cor_Info_Status status = new Programa_Cor_Info_Status
{
ID_Info = statusData.ID_Info,Status = statusData.Status,Obs = statusData.Obs,};
return Json(status,JsonRequestBehavior.AllowGet);
}
我尝试在我的控制器上使用 db.savechanges 但无济于事。 有人可以帮我举个例子吗?
谢谢
------------更新-------------------- -------
[HttpPost]
public ActionResult EditPost(Programa_Cor_Info_Status statusData,int ID_Status)
{
Programa_Cor_Info_Status status = new Programa_Cor_Info_Status
{
ID_Info = statusData.ID_Info,};
var q = db.Programa_Cor_Info_Status.Where(m => m.ID_Info == ID_Status).FirstOrDefault();
q.ID_Info = ID_Status;
db.Entry(q).State = EntityState.Modified;
db.SaveChanges();
return Json(status,JsonRequestBehavior.AllowGet);
}
namespace Balu0._1.Models
{
using System;
using System.Collections.Generic;
public partial class Programa_Cor_Info_Status
{
public int ID_Info { get; set; }
public int ID_Programa { get; set; }
public int ID_Linha_Cor { get; set; }
public string Status { get; set; }
public string Obs { get; set; }
}
}
解决方法
如果您还没有,请在您的视图中添加具有 ID_Info 值的隐藏模型字段。 将您的操作更改为:
public ActionResult EditPost(Programa_Cor_Info_Status statusData)
{
var existItem = db.Programa_Cor_Info_Status.Find(statusData.ID_Info);
// or if you dont have a proper primary key you can try
var existItem = db.Programa_Cor_Info_Status
.Where( i=> i.ID_Info== statusData.ID_Info).FirstOrDefault();
if (existItem != null)
{
db.Entry(existItem).CurrentValues.SetValues(statusData);
var result = db.SaveChanges(); // if result==0 then error
} else ...error
return Json(statusData,JsonRequestBehavior.AllowGet);
}
,
感谢我已经得到的帮助!!!
db.Entry(status).State = EntityState.Modified;
db.SaveChanges();
return Json(status,JsonRequestBehavior.AllowGet);