Impedire il valore da preservare in ModelState
-
28-10-2019 - |
Domanda
Buona giornata!
ASP.NET MVC fa un buon lavoro memorizzando i valori degli input durante Get/Post Cycle all'interno ModelState
e mettendoli in modo automobilistico in input in caso di errori di convalida.
Ma nella mia forma ho il campo CAPTCHA che non dovrebbe essere preservato durante gli errori di convalida (il valore Captcha viene rigenerato su ciascuna richiesta).
Ho provato a raggiungere questo obiettivo impostando
if (TryUpdateModel(model))
{
// ...
}
else
{
ModelState.Remove("CaptchaValue"); // ModelState does have CaptchaValue
return View(model); // CaptchaValue is empty in model
}
Ma non funziona.
Può essere un attributo che posso applicare al mio campo modello per impedirlo di preservare in ModelState?
Grazie in anticipo!
Soluzione 2
L'ho trovato nel thread nelle vicinanze MVC - Come modificare il valore di una casella di testo in un post?:
ModelState.SetModelValue("CaptchaValue", new ValueProviderResult(String.Empty, String.Empty, System.Threading.Thread.CurrentThread.CurrentCulture));
Ma sembra essere un po 'brutto.
Altri suggerimenti
È possibile utilizzare l'attributo BIND sul parametro di azione per controllare il comportamento di legame del modello:
public ActionResult YourActionName([Bind(Exclude = "CaptchaValue")]ModelType model)