Запретить сохранение значения в ModelState - PullRequest
0 голосов
/ 16 июня 2011

Добрый день!

ASP.NET MVC делает хорошую работу, сохраняя значения входных данных во время цикла GET / POST внутри ModelState и автоматически помещая их во входные данные в случае ошибок проверки.

Но в моей форме есть поле CAPTCHA, которое не должно сохраняться во время ошибок проверки (значение CAPTCHA создается заново при каждом запросе).

Я пытался добиться этого, установив

if (TryUpdateModel(model))
{
    // ...
}
else
{
    ModelState.Remove("CaptchaValue"); // ModelState does have CaptchaValue 
    return View(model); // CaptchaValue is empty in model
}

Но это не работает.

Может быть, есть атрибут, который я могу применить к полю моей модели, чтобы предотвратить его сохранение в ModelState?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Вы можете использовать атрибут bind в параметре action для управления поведением привязки модели:

public ActionResult YourActionName([Bind(Exclude = "CaptchaValue")]ModelType model)
0 голосов
/ 16 июня 2011

Я нашел это в соседней теме MVC - Как изменить значение текстового поля в сообщении? :

ModelState.SetModelValue("CaptchaValue", new ValueProviderResult(String.Empty, String.Empty, System.Threading.Thread.CurrentThread.CurrentCulture));

Но, кажется, это немного уродливо.

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