无法将模型类型转换为bool

时间:2017-03-04 20:40:27

标签: c# asp.net-mvc

我试图通过MVC进行简单的应用程序。这是我的代码 -

// MODEL

 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,
                    };

我在控制器代码中遇到错误,如下所示 - 无法隐式转换类型&#39; EmployeeTest.Models.Gender&#39;到了布尔?&#39;

在数据库中,性别的数据类型是位。

3 个答案:

答案 0 :(得分:0)

我相信EmployeeInfo对象具有bool? Gender属性。这表示您无法将Gender genderEmployee转换为bool? Gender。您需要将Gender = empModel.genderEmployee替换为Gender = (bool?) empModel.genderEmployee

答案 1 :(得分:0)

更改模型以更好地与数据库(位)对齐将更好地工作。没有理由用枚举使其复杂化。尝试这样的事情:

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

如果您仍需要在视图/控制器中出于其他原因使用枚举,则可以在将值分配给EmployeeInfo()时进行显式转换 宾语。

答案 2 :(得分:-1)

模型和控制器中代码的一小部分变化解决了我的问题

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


Gender = Convert.ToBoolean (empModel.genderEmployee)