MVC2 выдает InvalidOperationException в UpdateModel (), пытаясь обновить поле id - PullRequest
0 голосов
/ 06 мая 2011

Мое приложение 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?Я не хочу обновлять это поле !!

Есть идеи?Dave

Ответы [ 2 ]

0 голосов
/ 07 мая 2011

Попробуйте

UpdateModel(tester, formValues.ToValueProvider());

и убедитесь, что Id не включено в значения формы.

0 голосов
/ 06 мая 2011

Использование TryUpdateModel(tester) insted из UpdateModel(tester)

...