2013-05-31 11 views
0

내 사용자 모델의 이름은 입니다. active (모델이나 데이터베이스를 만들지 않았기 때문에 int입니다.이 속성은 부울로 사용됩니다.). 모델을 편집 할 액션 /Users/Edit/을 만들고 있으므로 활성 속성에 대한 확인란이있는 양식이 있습니다. 제출 버튼을 누르면 모델 바인더는 모든 양식 데이터를 하나의 단일 객체로 모아서 /Users/Edit에 매개 변수로 전달합니다.모델 바인더는 checkbox 값을 정수 속성으로 전달하지 않습니다.

그러나 데이터베이스에 변경 사항을 저장하려고하면 ModelState.isValid을 확인하고 모델 바인더가 부울을 정수로 변경하지 않으므로 false를 반환합니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

체크 박스는 true 또는 false를 나타냅니다. bool을 사용하고 하루 만 부르면 어떨까요? –

+0

내가 데이터베이스를 만들지 않았고 데이터베이스에 int가 있기 때문에 – user1534664

+1

Db를 편집 할 수 있습니까? 그것은 약간이어야합니다 – James

답변

1

1) 편집 DB는 조금

2) 부울 면도기보기

그것은 자동으로 생성됩니다에

3) 사용 DisplayFor에보기 모델에 대한 속성을 변경하려면 확인란을 선택하고 그에 따라 확인하십시오.

0

Db를 bool로 변경할 수없는 최악의 경우를 가정 해 봅시다. 그런 다음보기 모델을 사용하여 데이터 변환을 수행합니다.

은 사용자 모델은이다 말 :

public class StaticModel { 

    public string description { get; set; } 
    public int IsActive { get; set; } 

} 

는 그런 다음 뷰 모델 (외관 스타일)를 만들 :

public class StaticModelFacade { 

    StaticModel _value;  

    public StaticModelFacade(StaticModel value) { 

     _value = value; 

    } 

    public string description { 
     get {return _value.description;} 
     set {_value.description = value;} 
    } 

    public bool IsActive { 
     get { return _value.IsActive = 1; } 
     set { _value.IsActive = value ? 1 : 0 } 
    } 

} 

로보기 이제 부울에 결합 모두 확인까지 연결되어 있습니다.

+0

고마워요. 제임스 방법은 저를 bool로 바꿀 수 있기 때문에 더 잘 작동합니다. 그러나 이것을 알고있는 것이 좋습니다 =) – user1534664