我试图通过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;
在数据库中,性别的数据类型是位。
答案 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)