1

假设我有一个包含 30 个字段的表,我想显示(Edit.cshtml)2 个字段(GET)和更新(public ActionResutl Edit(items,items))只有 4 个字段

Edit.cshtml:RegNo = 1002 | 值 = 50

项目控制器:

        public ActionResult Edit(items items)
        {
           if (ModelState.IsValid)
           {
              db.items.Attach(items);
              items.DateAdd = DateTime.Now;
              items.Status = 2;
              db.SaveChanges();
           }
        }

问:如何仅更新 30 的这 4 个字段?

我是否必须添加 26 个 Html.HiddenFor() 助手?|| 创建一个包含 4 个字段的小类并尝试更新它(TryUpdateModel、ApplyCurrentValues)?

编辑:我只更新一行。

SQL:

UPDATE dbo.items SET Status = 2, RegNo = items.RegNo WHERE id = items.id -- i don't care about the other fields
4

3 回答 3

5

这是我在控制器的 actionresult 方法中所做的

[HttpPost]
public ActionResult Edit(Items items)
{
db.Items.Single(ItemID => ItemID.ID == items.ID).<First Column to update> = <the value needed>;
db.Items.Single(ItemID => ItemID.ID == items.ID).<Second Column to update> = <the value needed>;
db.Items.Single(ItemID => ItemID.ID == items.ID).<Third Column to update> = <the value needed>;
db.Items.Single(ItemID => ItemID.ID == items.ID).<Fourth Column to update> = <the value needed>;
db.SaveChanges();
return RedirectToAction("index");
}

所以让我们继续举例

[HttpPost]
public ActionResult Edit(Items items)
{
db.Items.Single(ItemID => ItemID.ID == items.ID).Status = 2;
db.Items.Single(ItemID => ItemID.ID == items.ID).Barcode = Abc12345;
db.Items.Single(ItemID => ItemID.ID == items.ID).RegNo = 1002;
db.Items.Single(ItemID => ItemID.ID == items.ID).Manufacturer = Tomato Soup Inc;
db.SaveChanges();
return RedirectToAction("index");
}
于 2012-05-18T12:29:52.313 回答
2

您需要包含所有字段或在回帖中查找对象,并且只更改感兴趣的字段。

于 2012-05-18T12:29:17.267 回答
1

MVC4 EF 中只有单个字段更新,并且此代码正确工作。

db.Booking_transactions.Single(b => b.BookingId == booking_transaction.BookingId ).booking_status = 2;
于 2014-12-09T06:11:05.693 回答