0

私はテレリック グリッド コントロールを使用して、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 関数は関連するレコードを見つけることができず、更新は行われません!

どんな援助でも大歓迎です。

ありがとうございました。

4

1 に答える 1

1

私の唯一の推奨事項は、古い ID で非表示の列を作成し、それを他のデータと新しい ID と共に返すことです。私は過去にこれを同様に行いました。もちろん、古い Id をビュー モデルに追加する必要があります。
これまでで最もエレガントなソリューションではありませんが、キーが変更される可能性がある場合に対処する必要があります。

于 2012-06-22T21:12:54.940 に答える