2014-03-31 2 views
0

TestStrTestBool 속성을 갖는보기 모델이 있습니다. 양식을 제출하면 TestStr 값만 바운드 뷰 모델로 설정되지만 TestBool은 설정되지 않습니다. TestBool에 대한 양식 모음의 값은 "on"으로 설정되어 있습니다. true로 표시 되려면 true으로 설정해야합니까?viewmodel의 Bool이 게시물의 MVC 작업에서 바인딩되지 않습니다.

내 C#보기 모델 :

public class MyViewModel { 
    public bool TestStr { get; set; } 
    public bool TestBool { get; set; } 
} 

내 면도기보기 형태로 내부 :

<input name="TestStr" value="this is getting set in my MVC action" /> 
<input name="TestBool" checked=checked /> // this always gets set to false, even tho it's checked 

내 MVC 액션 : 나는 알

public ActionResult(MyViewModel vm) { 
    // vm.TestBool is always false 
} 

이 나는 ​​@Html.CheckBoxFor(...)를 사용하는 경우 그것은 올바르게 내 MVC 작업에서 바인딩합니다. 입력 된 HTML을 사용하여이 작업을 수행 할 수 있습니까? 내가 함께 작업하는 콜렉션이 있기 때문에, 각각에 대한 입력 이름을 제공해야합니다.

+0

중복 가능성 (누군가 http://stackoverflow.com/questions/12674572/proper-usage-of-net-mvc 도시 -html-checkboxfor) –

답변

0

체크 박스가 선택되지 않았기 때문에 확인란이 다시 게시되지 않기 때문입니다. HTML 도우미는 실제로 검사되지 않은 버전에 대한 숨겨진 필드를 추가 한 다음 충돌을 확인합니다 (선택/선택 안 함).

다른 필드는 보존하지만 표시하지 않으려면 Html.HiddenFor을 사용하여 값을 보존 할 수 있습니다.

이 포스트는 [.NET MVC Html.CheckBoxFor의 올바른 사용]의 same issue

+0

그러나 확인 된 체크 박스는 게시되지만 값은 "on"이고 "true"가 아닙니다. –

+0

이것은 의도적으로 설계된 것입니다. 그들은 항상 HTML 사양의 일부로 다시 게시합니다. ModelBinder는이를 알고 있으므로 '켜기'를 사실로 변환합니다. –

관련 문제