美好的一天!防止保存在ModelState中的值
ASP.NET MVC通過在ModelState
內的GET/POST週期內存儲輸入值,並在出現驗證錯誤時自動將它們輸入到輸入中,從而做得很好。
但在我的表單中,我有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 2011-06-17 15:34:38
但是如何使它適用於任何類型的字段(值類型和引用類型),而不僅僅是字符串? – artvolk 2011-06-18 08:24:28
嗯不太確定,你可能需要在模型綁定器中進行挖掘,試圖找出這個類型,然後通過反射來實例化它。 – Chao 2011-06-21 15:50:37