0

我的 MVC2 应用程序今天让我很伤心......我想使用以下控制器代码编辑数据库记录:

    [AcceptVerbs(HttpVerbs.Post), Authorize(Roles = "Admin")]
    public virtual ActionResult Edit(int id, FormCollection formValues)
    {
        var masterDataProxy = MasterDataChannelFactory.OpenChannel();
        var tester = masterDataProxy.GetTester(id);
        masterDataProxy.CloseChannel();

        if (null == tester)
        {
            return View(Views.NotFound);
        }

        try
        {
            UpdateModel(tester);

            var adminProxy = AdminChannelFactory.OpenChannel();
            adminProxy.AddUpdateTester(tester);
            adminProxy.CloseChannel();

            return RedirectToAction(Actions.Index());
        }
        catch (Exception ex)
        {
            ModelState.AddModelError("Tester", ex.Message);

            return View(tester);
        }
    }

我收到高级异常“无法更新‘Model.Entity’类型的模型”,当我深入了解 ModelState 时,我发现它在尝试更新 Id 字段时失败 - “设置 Id属性仅在实体反序列化期间受 .NET 3.5+ 支持”。

问题是,我如何告诉 UpdateModel() 不要更新 Id 字段?我不希望它更新该字段!

有任何想法吗?戴夫

4

2 回答 2

0

使用TryUpdateModel(tester)insted ofUpdateModel(tester)

于 2011-05-06T19:59:55.497 回答
0

尝试

UpdateModel(tester, formValues.ToValueProvider());

并确保Id不包含在 formValues 中。

于 2011-05-06T20:02:29.740 回答