C# 无法将模型类型转换为布尔
我正在尝试通过MVC制作简单的应用程序。这是我的密码- //模型C# 无法将模型类型转换为布尔,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试通过MVC制作简单的应用程序。这是我的密码- //模型 public class EmployeeModel { public int empID { get; set; } public Gender genderEmployee { get; set; } } public enum Gender { Male, Female } //看法 @using Employee
public class EmployeeModel
{
public int empID { get; set; }
public Gender genderEmployee { get; set; }
}
public enum Gender
{
Male,
Female
}
//看法
@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>
我在下面给出的控制器代码中遇到错误-
无法将类型“EmployeeTest.Models.Gender”隐式转换为“bool”
在数据库中,性别的数据类型是bit。我相信EmployeeInfo对象有一个bool?性别财产。这是说你不能把性别员工变成一个傻瓜?性别您需要将Gender=empModel.genderEmployee替换为Gender=bool?empModel.genderEmployee.模型和控制器中代码的一点变化解决了我的问题
public enum Gender
{
Male=1,
Female=0
}
Gender = Convert.ToBoolean (empModel.genderEmployee)
更改模型以更好地与数据库位对齐将更有效。没有理由使用枚举使其复杂化。试着这样做:
public class EmployeeModel
{
public int empID { get; set; }
public bool IsMale { get; set; }
}
如果由于视图/控制器中的其他原因仍需要使用枚举,则可以在将值分配给EmployeeInfo时进行显式转换
反对 你给我们的线路有错误吗?在新员工信息中心?我觉得这里缺少了一些东西。我没有错过,但通过更改代码little-public enum性别{Male=1,Female=0}得到了解决方案Gender=Convert.ToBoolean empModel.genderemployee如果您显示EmployeeInfo类,错误将很明显,不清楚此帖子与问题的关系,因为问题根本没有关于性别的信息,通常看起来是一个糟糕的建议-为什么性别会是布尔值false是否意味着缺少性别?,为什么要使用像将enum强制转换为bool这样脆弱的构造?
public class EmployeeModel
{
public int empID { get; set; }
public bool IsMale { get; set; }
}