2010-01-20 2 views
0

어제 게시 한 질문에 대한 후속 조치입니다. 확인란을 올바르게 구현할 수 있었으며 모든 제안에 감사드립니다. 이제는 페이지를 새로 고치는 동안 또는 사용자가 브라우저에서 뒤로 버튼을 클릭 할 때 확인란 상태를 유지하는 두 번째 문제를 해결하기 위해 노력하고 있습니다. 다시 나는 내보기에 다음 예제 코드를 가지고 : 나는 상자를 선택하면체크 박스 HTML 도우미 오류

<tr> 
    <td><label for="Name">Name</label></td> 
    <td><%= Html.Encode(entity.CONTACT_NAME)%></td> 
    <td><%= Html.CheckBox("Name", false, new {@value = Html.Encode(entity.CONTACT_NAME)}) %></td> 
    </tr> 

, 나는 "거짓 신원 미상의"ModelState의 이름 키에 대한 다음과 같은 값을 얻는다. 내가 이해하는 것으로부터, 체크 박스 HTML 도우미는 ModelState로부터 그 값을 얻습니다. 페이지 재 - 렌더링 및 코드의 특정 라인에 도달 할 때, 나는 다음과 같은 오류 얻을 : 다시

The parameter conversion from type 'System.String' to type 'System.Boolean' failed 

을, 내 목표는 단순히 여기에 무슨 일이 일어나고 있는지 확실하지 않은 체크 박스의 상태를 유지하는 것입니다.

UPDATE : 렌더링을 다시하고 키가 문자열로 저장하는 경우, 어떻게 그들을 부울 값으로 변환 할 때 체크 박스가 ModelState에서 값을 가져옵니다 경우

?

답변

0

의견을 보내 주셔서 감사합니다. 필자는 ModelState에서 false가 아닌 모든 값을 살펴보고 SetModelValue를 호출하여 true로 설정 한 메서드에서 매개 변수로 ModelState를 전달해야했습니다.

예 :이 프로젝트

errorHandler(ModelStateDictionary modelState, ChangeRequest aChangeRequest) 
{ 
       if (aChangeRequest.Job != "false") 
       modelState.SetModelValue("Job", new ValueProviderResult("true", "true", new CultureInfo("en-US"))); 

    //Etc. 
} 

, 내 TryUpdateModel 컨트롤러를 사용하여 값으로 생성하고뿐만 아니라 상기 방법에이 전달 된 클래스 오브젝트를 생성. 나는 훨씬 더 효율적인 방법이 있다고 확신한다. 그러나 이것은 효과가있는 것으로 보인다. 추가 제안은 환영 받는다.

1

체크 박스의 값을 엔터티의 연락처 이름으로 설정하려고합니다. 문자열 인 것 같습니다.

값을 엔터티의 부울 속성으로 설정해야합니다.

0

확인란의 값을 설정하는 데 사용하는 속성이나 표현식이 부울 유형인지 확인하십시오.

+0

부울 값이 이니셜 POST (예 : "true, false"또는 "Name, false")에서 문자열 리터럴을 넘은 경우이를 어떻게 다시 부울로 변환해야합니까? ? 문자열 Name을 "true"로 변경할 수는 있지만 여전히 문자열입니다. – kingrichard2005

관련 문제