MVC2 在 UpdateModel() 中抛出 InvalidOperationException,试图更新 id 字

本文关键字:更新 id InvalidOperationException UpdateModel MVC2 | 更新日期: 2023-09-27 17:55:47

我的 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 字段时失败——"在实体反序列化期间,.NET 3.5+ 仅支持 Id 属性"。

问题是,我怎么能告诉 UpdateModel() 不更新 Id 字段? 我不希望它更新该字段!!

有什么想法吗?戴夫

MVC2 在 UpdateModel() 中抛出 InvalidOperationException,试图更新 id 字

尝试

UpdateModel(tester, formValues.ToValueProvider());

并确保Id不包含在表单值中。

使用 TryUpdateModel(tester) 而不是 UpdateModel(tester)