Добрый день!Предотвращение сохранения ценности в ModelState
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?
Заранее спасибо!
Вы можете добавить немного синтаксический сахар к этому, сделав метод расширения ModelState.ClearValue (строку ИмениСвойство), который будет делать SetModelValue для вас и должен сделать код немного чище. – Chao
Но как заставить его работать с любым типом поля (как для типов значений, так и для ссылочных типов), а не только для строки? – artvolk
Хммм не так уверен, вам, возможно, придется копаться в модельных машинах, чтобы попытаться выработать тип, а затем создать его через отражение. – Chao