MVC2 TryUpdateModel включает атрибуты, не игнорирующие проверки не включенных полей - PullRequest
1 голос
/ 12 января 2011

В моем приложении MVC 2 есть форма, которая позволяет пользователю обновлять набор полей из объекта модели, это просто обновление, поскольку объект модели уже существует с введенными обязательными полями. Однако, когда я пытаюсь обновить небольшой набор полей и вызвать TryUpdateModel для моего объекта модели, это не удается, и мое состояние модели имеет ошибки, основанные на обязательных полях, которые уже были заполнены.

Вот мой код контроллера:

[HttpPost]
public ActionResult Work(int id, FormCollection forms)
{
    var lead = claimRepo.GetLeadByID(id);
    if (lead == null)
        return View("NotFound");
    if (TryUpdateModel(lead, "Lead")) {...}
}

Я даже пытался явно указать, какие поля обновлять, вот так

TryUpdateModel(lead, "Lead", new string[] { "Date", "UserID", ...}) {...}

И все равно не получается, есть ли какая-то причина, по которой он не игнорирует проверку не включенных полей или я что-то не так делаю?

Спасибо!

РЕДАКТИРОВАТЬ

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

Другое Редактирование

У меня есть также пользовательская модель со всеми обязательными полями, поддерживаемыми базой данных, и попытка явно указать, какие поля обновляются, все еще приводит к ошибкам состояния модели в полях, отсутствующих в форме, но заполняется в объекте модели из базы данных. это обновляется.

1 Ответ

0 голосов
/ 13 марта 2011

Я не уверен, когда поведение по умолчанию было изменено для проверки только входящих данных, из того, что я знаю, я думаю, что только asp.net mvc1 поддерживал его, затем оно изменилось в asp.net mvc2, так или иначе, вы могли бы сказать [Validate (false)] и позволить частичным данным пройти и вручную выполнить некоторую проверку.Вы можете использовать ViewModel и при необходимости проверить все поля в модели представления как второй вариант.Полезная ссылка: частичная проверка

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