1

30 個のフィールドを持つテーブルがあり、2 つのフィールド (GET) を表示 (Edit.cshtml) し、4 つのフィールドのみを更新 (public ActionResutl Edit(items, items)) したいとします。

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();
           }
        }

Q:この 30 の 4 つのフィールドだけを更新するにはどうすればよいですか?

26 個の Html.HiddenFor() ヘルパーを追加する必要がありますか? || 4 つのフィールドを持つ小さなクラスを作成し、それを更新してみてください ( TryUpdateModel, ApplyCurrentValues ) ?

EDIT:1行だけ更新しています。

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 に答える