2017-03-04 2 views
-2

MVC를 통해 간단한 응용 프로그램을 만들려고합니다. 여기 내 코드 -모델 유형을 bool로 변환 할 수 없습니다.

// 모델이다

public class EmployeeModel 
    { 
     public int empID { get; set; } 
     public Gender genderEmployee { get; set; } 
    } 

    public enum Gender 
    { 
     Male, 
     Female 
    } 

// VIEW

@using EmployeeTest.Models 
    @model EmployeeTest.Models.EmployeeModel 

     <div class="form-group"> 
        @Html.LabelFor(m => m.genderEmployee) 
        <div class="col-lg-10"> 
         @Html.DropDownListFor(m => m.genderEmployee, 
          new SelectList(Enum.GetValues(typeof(Gender))), 
          "Select Gender") 
        </div> 
     </div> 

// CONTROLLER

EmployeeInfo objInfo= new EmployeeInfo() 
        { 
         empName = empModel.empName, 
         Gender = empModel.genderEmployee, 
         dateOFBirth = empModel.dateOfBirth, 
         IsActive = empModel.isActive, 
        }; 

나는 아래와 같습니다 컨트롤러 코드에서 오류가 발생하고 - 'EmployeeTest.Models.Gender'유형을 암시 적으로 'bool?'유형으로 변환 할 수 없습니다.

데이터베이스에서 성별 데이터 유형은 bit입니다.

+0

줄에서 오류가 있습니까? 새로운 EmployeeInfo에서? 여기 뭔가가 빠진 것 같은데. – dbraillon

+0

그럼 내가 놓친하지만 도착하지 않은 코드를 변경하여 솔루션 공공 열거 성별 { 남성 = 1, 여성 = 0 } 성별 = Convert.ToBoolean (empModel.genderEmployee) –

+1

당신이 나타났다 경우 클래스를 little- EmployeeInfo 오류가 분명해질 것입니다 – Steve

답변

0

EmployeeInfo 개체에 bool? Gender 속성이 있다고 생각합니다. 이는 Gender genderEmployeebool? Gender으로 변환 할 수 없다는 의미입니다. Gender = empModel.genderEmployeeGender = (bool?) empModel.genderEmployee으로 바꿔야합니다. 모델과 컨트롤러의 코드 변화의

-1

작은 조각이 더 잘 작동합니다 데이터베이스 (비트)에 부합하는 모델을 변경 내 문제

public enum Gender 
    { 
     Male=1, 
     Female=0 
    } 


Gender = Convert.ToBoolean (empModel.genderEmployee) 
+2

이 게시물이 질문과 관련되어 있는지 명확하지 않으며 질문에 '성별'에 대한 정보가 전혀 없으므로 일반적으로 나쁜 권고처럼 보입니다. 왜 "성별"이 부울 값이 될 수 있습니까 ("false" 젠더가 없다는 것을 의미합니까?), 왜 열등 케스팅과 같은 깨지기 쉬운 구조를 사용합니까? –

0

를 해결했다. 열거 형으로 복잡하게 만들 필요가 없습니다. 여전히 EmployeeInfo() 객체에 값을 할당 할 때 명시 적 변환을 할 수있는보기/컨트롤러에 다른 이유로 열거를 사용해야하는 경우

public class EmployeeModel 
    { 
     public int empID { get; set; } 
     public bool IsMale { get; set; } 
    } 

: 이런 식으로 뭔가를 시도하십시오.

관련 문제