私はテレリック グリッド コントロールを使用して、MVC3 でテーブル データを操作しています。
テーブルのキーは文字列型のフィールドです。
関連するビュー コード:
.DataBinding(dataBinding =>
{
dataBinding.Ajax()
.Select("MyTableSelectAjaxEditing", "Maintenance")
.Insert("MyTableInsertAjaxEditing", "Maintenance")
.Update("MyTableSaveAjaxEditing", "Maintenance")
.Delete("MyTableDeleteAjaxEditing", "Maintenance");
})
私の update メソッドはこの関数にマップされています:
[AcceptVerbs(HttpVerbs.Post)]
[GridAction]
public ActionResult MyTableSaveAjaxEditing(String id)
{
MyTable myTable = db.MyTable.Find(id);
if (myTable != null)
{
if (TryUpdateModel(myTable))
{
db.SaveChanges();
}
}
return View(new GridModel(db.MyTable));
}
キーではないフィールドを更新すると、すべてがうまくいきます。キーが (グリッドから) 更新されている場合、id パラメーターは NEW 値を返すため、メソッドの先頭にある Find 関数は関連するレコードを見つけることができず、更新は行われません!
どんな援助でも大歓迎です。
ありがとうございました。