ModelState에서 값이 보존되지 않도록 방지
-
28-10-2019 - |
문제
안녕하세요!
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
근처 스레드에서 이걸 찾았어요 MVC - 게시물의 텍스트 상자 값을 변경하는 방법은 무엇입니까?:
ModelState.SetModelValue("CaptchaValue", new ValueProviderResult(String.Empty, String.Empty, System.Threading.Thread.CurrentThread.CurrentCulture));
그런데 좀 별로인 것 같습니다.
다른 팁
모델 바인딩 동작을 제어하려면 작업 매개변수의 바인딩 속성을 사용할 수 있습니다.
public ActionResult YourActionName([Bind(Exclude = "CaptchaValue")]ModelType model)
제휴하지 않습니다 StackOverflow