2012-11-16 2 views
4

가능한 중복으로 설정되지 않은 : 나는 체크 박스를 생성하고 확인란 모델을 결합하는 데 필요한
ASP.NET MVC:Why does the CheckBoxFor render an additional input tag and how can I get the value using the FormCollection체크 박스 선택 값은 예상

. 모델 값 대신에 값을 false로 지정한다고 가정합니다. 아래 코드.

@Html.CheckBox("abcd",false) 

출력 :

<input id="abcd" name="abcd" type="checkbox" value="true" /> 
<input name="abcd" type="hidden" value="false" /> 

생성되는 HTML의 출력은 위와 같이된다. 나는 왜 숨겨진 체크 상자가 면도기 뷰 엔진에 의해 배치되는지 이해합니다. 내 질문은 값이 false 인 경우 표시되는 확인란이 value="false" (선택 취소)이어야합니다.

value="true" (선택)을 넣었습니까? 도우미 체크 박스에도 똑같이 적용됩니다. 무엇이 잘못 되었는가 또는 이것을 구현하는 방법을 설명 할 수 있습니까?

답변

3

당신이 모델을 통해 값을 전달 고려해야합니다

@Html.CheckBoxFor(model => model.abcd) 

당신이 당신이 반환하기 전에 컨트롤러에서 false로 ABCD 속성을 설정하여이 작업을 수행 할 수 있습니다 '거짓'으로 설정해야하는 경우 전망.

1

체크 박스의 체크/체크되지 않은 값이 다르지 않은 경우 체크 된 값만 있습니다. 면도기가 왜 숨겨진 필드를 출력하는지 이해한다면 이해할 수 있습니다.

value='false'을했다는 것을 잠시 상상해보십시오. 체크 박스를 선택하면 어떻게됩니까? 가치가 바뀔 것으로 기대하십니까? (힌트 : 당신은해서는 안됩니다). 체크 박스에는 value='false'이 표시됩니다. 그게 무슨 뜻이야? 그러면 게시 할 때 false을 귀하의 가치로 게시하게되며 이는 의미가 없습니다.

So. 확인란 값의 속성은 변경되지 않습니다. 값을 사용하는 코드를 작성해야하는 경우 값을 찾지 말고 확인 여부를 확인하십시오.

+0

그래서 체크 박스를 선택하고 true 또는 false를 사용하여 체크 표시가 필요하면'@ Html.CheckBox ("abcd", false)'어떻게해야합니까? 내가 너의 대답에서 원하는 것을 얻을 수 없었기 때문에. – Desmond

+1

@Desmond 체크 박스에 입력 된 "checked"상태는 값과 별개의 속성입니다. 텍스트 상자의 체크 표시와 체크 표시를 해제하면 value 속성은 변경되지 않지만 브라우저는 체크 박스가 선택되었는지 여부를 확인하고 체크 표시가 있으면 입력 이름/값을 게시합니다. 체크하지 않으면 아무것도 표시하지 않습니다 조금도. 따라서 값이 false로 설정된 두 번째 숨겨진 입력 필드가 자동으로 생성되는 이유는 사용자가 체크 박스를 선택하면 서버는 두 입력에 대해 두 개의 키/값 쌍을 수신하게됩니다.이 경우에는 true를 허용합니다. 그릇된. – LaserBeak

관련 문제