我的用户模型有一个名为active的 int 属性(它是一个int,因为我没有创建模型,也没有创建数据库,它被用作布尔值..)。我正在创建将编辑模型的操作/Users/Edit/
,因此我有一个带有活动属性复选框的表单。按下提交按钮时,模型绑定器会将所有表单数据放在一个单个对象中,并将其作为参数传递给/Users/Edit
。
但是当我尝试将更改保存到数据库时,我检查ModelState.isValid
并返回false,因为模型绑定器不会将布尔值更改为整数。
我该如何解决这个问题?
答案 0 :(得分:1)
1)编辑Db使其有点
2)将视图模型上的属性更改为bool
3)在Razor View中使用DisplayFor
现在它将自动生成一个复选框并相应地进行检查。
答案 1 :(得分:0)
让我们假设您无法将Db更改为bool。然后,您将使用视图模型为您执行数据转换。
说出你的用户模型是这样的:
public class StaticModel {
public string description { get; set; }
public int IsActive { get; set; }
}
然后创建一个视图模型(外观样式):
public class StaticModelFacade {
StaticModel _value;
public StaticModelFacade(StaticModel value) {
_value = value;
}
public string description {
get {return _value.description;}
set {_value.description = value;}
}
public bool IsActive {
get { return _value.IsActive = 1; }
set { _value.IsActive = value ? 1 : 0 }
}
}
你的视图现在绑定到一个bool并且所有连接都正常。