如何使用 POST 值更新我的数据表。 ASP.NET
Posted
技术标签:
【中文标题】如何使用 POST 值更新我的数据表。 ASP.NET【英文标题】:How to update my data table with POST values. ASP.NET 【发布时间】:2021-04-20 14:47:44 【问题描述】:我想更新我的数据库中的值。为了确保我的脚本正常工作并发送值,我创建了一个 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,
Status = statusData.Status,
Obs = statusData.Obs,
;
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;
【问题讨论】:
您的项目中有 EF Core dbcontext 吗? 是的@Sergey 我有 @mason 我已经用错误更新了我的帖子,尽管我拥有的唯一信息来自帖子。 【参考方案1】:如果您还没有,请在您的视图中添加带有 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);
【讨论】:
System.ArgumentException: '传递的主键值的数量必须与实体上定义的主键值的数量相匹配。参数名称:keyValues'——这种情况下应该只有一个吧? 你有几个属性的复杂键?请显示您的 Programa_Cor_Info_Status 类。 我尝试更改为:var existsItem = db.Programa_Cor_Info_Status.Where(s => s.ID_Info == statusData.ID_Info); 我没有看到关键属性。这门课的关键是什么?这就是 Find 无法正常工作的原因。是的,那么在这种情况下你可以使用 Where 代替。 关键是ID_Info【参考方案2】:感谢我已经得到的帮助!!!
db.Entry(status).State = EntityState.Modified;
db.SaveChanges();
return Json(status, JsonRequestBehavior.AllowGet);
【讨论】:
以上是关于如何使用 POST 值更新我的数据表。 ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章