Что на самом деле пытается сделать MVC Controller.UpdateModel <T>(T)? - PullRequest
2 голосов
/ 05 августа 2009

Когда я отправляю свою страницу MVC, я получаю исключение IvalidOperationException из объекта System.Web.Mvc Controller в методе UpdateModel.

Документация MSDN гласит, что этот метод делает следующее:

Обновляет указанный экземпляр модели, используя значения от текущего поставщика значений контроллера.

Является ли поставщик значения ссылкой на текущий объект запроса?

Или где именно он получает значения, которые он использует для обновления модели?

А что конкретно проверяет метод UpdateModel и что он «означает», когда говорится, что

Модель типа 'abcXYZ' не была успешно обновлена ​​

Спасибо

Ответы [ 2 ]

3 голосов
/ 05 августа 2009

Да, поставщик значений по умолчанию ссылается на текущий объект запроса (по умолчанию Request.Form.AllKeys.)

UpdateModel пытается установить любые свойства в вашей модели, которые соответствуют ключу в этой коллекции.

Если это невозможно, потому что либо нет установщика, либо невозможно прямое приведение, вы получите эту ошибку.

0 голосов
/ 05 августа 2009

Я не знаю всех ответов на ваши вопросы, но у меня была эта проблема раньше, и теперь я проверяю, что на модели, которую я пытаюсь обновить, есть как геттеры, так и сеттеры. Это обычно исправляет мои проблемы.

Я также теперь использую TryUpdateModel, чтобы я мог перехватывать исключения и реализовывал классы проверки, чтобы гарантировать выполнение минимальных требований модели.

Я также использую UpdateModel<MyModel>(Model)

Я также буду использовать на вставке что-то вроде public ActionResult Create(MyModel myModel){}

Как я уже сказал, нет конкретного ответа на ваш вопрос, но это то, что я делаю, чтобы он работал.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...