2010-12-03 4 views
0

ASP.NET 응용 프로그램을 개발하는 방법을 배우기 시작한 후 양식을 제출 한 후에도 확인란을 선택하는 방법에 대해 의아하게 생각합니다. 확인란. 확인란은 사용자가 이용 약관에 동의한다는 확인을위한 것이며 폼 제출시 일부 오류가 반환되면 화면에 오류 메시지를 표시하고 체크 표시가 있는지 여부에 관계없이 확인란을 선택하지 않은 상태로 유지하려고합니다.ASP.NET : 확인란을 선택하지 않은 채로 제출하는 경우 항상

<%: Html.CheckBoxFor(m => m.UserAgreement) %> 

그리고 시도 모두 내 컨트롤러에 다음과 그들 중 누구도 작동하지 않습니다 : 내보기에서

나는 다음과 같은 한

ViewData["UserAgreement"] = false; 

return View(new MyModel { UserAgreement = false}); 

누구든지 달성하는 방법에 대한 도움이 될 수 있습니다 무엇을 나는 필요하다? 고맙습니다.

답변

0

ASP.NET MVC CheckBox는 명시 적으로 그렇게하지 않는 한 상태를 유지하지 않습니다.

위의 코드는보기가 반환 될 때 'UserAgreement'가 선택되어 있어야한다는 것을 나타냅니다 (값은 TRUE 임). 이는 선택하지 않아야합니다.

보기를 사용자에게 반환하기 전에 UserAgreement의 값을 'true'로 설정하지 않으면 확인란이 선택 취소됩니다. 마찬가지로, UserAgreement 속성이 'true'로 설정된 모델을 액션이 받고, 뷰에 반환하기 전에 'false'로 다시 설정하지 않으면, 체크 박스는 체크 된 채로 유지됩니다.

+0

안녕 나단, 미안 내가 수정 한 내 게시물에서 실수를했다. 나는 false를 값으로 지정하려고했다. 제출하기 전에 체크 표시를하면 체크 박스가 선택됩니다. 체크 박스에 내가하는 일은 제출 후에도 그대로 유지됩니다. 그건 내가 원한 것이 아닙니다 ... 제출하기 전에 체크 또는 체크하지 않은 체크 박스를 항상 체크하지 않도록하고 싶습니다. – user152235

0

값이 ModelState 속성에 저장됩니다. 게시물 뒤에 값을 다시 설정하려면. ModelState 속성의 값을 지워야합니다.

+0

카일 안녕하세요. 어떻게해야합니까? 마지막 코드 줄이 그렇게 생각 했나요? – user152235

0

시도한보기를 반환하기 전에 ModelState.Remove("UserAgreement");을 시도하십시오.

1

내 모델의 값을 false로 설정해도 실제로이 문제를 해결하지는 못했지만 오랫동안 나를 괴롭혔습니다. 내가 찾은 것은 ModelState 컬렉션의 값을 검사하는 것입니다.

이 아마도 가장 깨끗한 해결책이 아니다 그러나 이것은 나를 위해 일한 궁극적으로 무엇을 :

private ActionResult DisplayView(string viewName, MyModelClass model) 
{ 
    model.AgreeTerms = false; 
    ModelState.Remove("AgreeTerms"); 

    return View(viewName, model); 
}