2012-09-24 7 views
0

Entity Framework를 사용하고 tblAuthorMaster 유형의 강력한 유형보기 모델 인 뷰가 하나 있습니다. 포스트 ModelState 나에게 다음과 같은 오류 반환에 : 여기사용자 정의 클래스로 오버로드 EF 유효성 검사

 

The value '0' is not valid for Status. 

을 (TEXT = "활성/비활성"VALUE = "1/0"), 그래서 때마다 상태는 DB/EF에서 boolen 데이터 형식이며보기에 그것은 드롭 다운입니다 나는 위의 오류 메시지를받는 데 사용되는 양식을 게시 할 수 있습니다.

이 문제를 극복하기위한 몇 가지 해결책을 시도했지만 정상적으로 작동하지 않는 것 같습니다.

다음

tblAuthorMaster은 EF 클래스이며, AuthorModel 내가 일부 사용자 지정 유효성 검사 및 기타 물건에 대한 사용하고 내 사용자 정의 클래스입니다 : 다음

내 코드베이스입니다.

 

    [MetadataType(typeof(AuthorModel))] 
    public partial class tblAuthorMaster { } 

    public class AuthorModel 
    { 
     [Required(ErrorMessage = "*")] 
     public string AuthorName { get; set; } 
     [Required(ErrorMessage = "*")] 
     public bool Status { get; set; }   

    } 

미리 감사드립니다.

답변

1

제대로 작동하려면 드롭 다운의 VALUE는 true/false이어야하며 1/0이 아니어야합니다. 당신이 당신의 doropdown을 생성하는 방법이 표시되지 않은 이후로 도움이 어렵다하지만 다음과 같이 보일 수 있습니다

<%= Html.DropDownListFor(
    x => x.Status, 
    new[] 
    { 
     new SelectListItem { Value = "true", Text = "active" }, 
     new SelectListItem { Value = "false", Text = "inactive" }, 
    } 
) %> 

또한이 개 가능한 값 드롭 다운을 사용하는 점은 무엇입니까? HTML은이 목적을 위해 체크 박스를 제공합니다 :

<%= Html.CheckBoxFor(x => x.Status) %> 

그리고 마지막 말을 : 당신이 당신의 질문에 보기 모델 전혀 뷰 모델 아닙니다 부르는. 자동 생성 된 EF 도메인 모델입니다. 보기 모델은 특정보기의 요구 사항에 맞게 특별히 디자인 한 클래스이며 일부 마법사에서 자동 생성되지 않습니다.

+0

true/false로 설정하는 것은 정상적으로 작동하지만 1/0을 사용하지 않는 것이 좋습니다. – Sham

+0

.NET에서 부울 유형은 자바 스크립트와 같은 다른 언어와 달리 '1'과 '0'이 아닌 'true'또는 'false' 값을 가질 수 있습니다. 기본 모델 바인더가 요청에서 부울 값으로 파싱을 시도하면 실패하고 'ModelState'에 오류 메시지를 추가합니다. –

+0

감사합니다 Darin 실제로 내 AuthorModel 클래스의 일부 변경 내용을 포함하는 다른 옵션을 찾고있었습니다. 그걸 좋아할 수 있니? – Sham

관련 문제