0

我正在使用 Telerik 网格控件来操作 MVC3 下的表数据。

表中的键是字符串类型的字段。

相关查看代码:

.DataBinding(dataBinding =>
        {
            dataBinding.Ajax()
                .Select("MyTableSelectAjaxEditing", "Maintenance")
                .Insert("MyTableInsertAjaxEditing", "Maintenance")
                .Update("MyTableSaveAjaxEditing", "Maintenance")
                .Delete("MyTableDeleteAjaxEditing", "Maintenance");
        })

我的更新方法映射到这个函数:

    [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 回答