0

再会!

ModelStateASP.NET MVC 通过在内部存储 GET/POST 循环期间的输入值并在出现验证错误时自动将它们放入输入中来做得很好。

但是在我的表单上,我有验证错误期间不应保留的 CAPTCHA 字段(每个请求都会重新生成 CAPTCHA 值)。

我试图通过设置来实现这一点

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

但它不起作用。

可能有一个属性可以应用于我的模型字段以防止它保留在 ModelState 中?

提前致谢!

4

2 回答 2

1

您可以使用 action 参数上的 bind 属性来控制模型绑定行为:

public ActionResult YourActionName([Bind(Exclude = "CaptchaValue")]ModelType model)
于 2011-06-16T09:51:52.957 回答
0

我在附近的线程MVC 中找到了这个 - 如何更改帖子中文本框的值?

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

但是好像有点丑。

于 2011-06-16T09:05:20.950 回答