0

我的用户模型有一个名为 active 的int属性(它是一个 int ,因为我没有创建模型也没有创建数据库,它被用作布尔值......)。我正在创建/Users/Edit/将编辑模型的操作,因此我有一个带有活动属性复选框的表单。当按下提交按钮时,模型绑定器会将所有表单数据放在一个对象中,并将其作为参数传递给/Users/Edit.

但是当我尝试将更改保存到数据库时,我检查ModelState.isValid并返回 false,因为模型绑定器不会将布尔值更改为整数。

我怎么解决这个问题?

4

2 回答 2

1

1)编辑 Db 使它有点

2) 将视图模型上的属性更改为布尔值

3) 在 Razor 视图中使用 DisplayFor

它现在将自动生成一个复选框并相应地检查它。

于 2013-05-31T21:12:55.627 回答
0

让我们假设您无法将 Db 更改为布尔值的最坏情况。然后,您将使用视图模型为您执行数据转换。

假设您的用户模型是这样的:

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

}

你的视图现在绑定到一个布尔值,一切都连接好了。

于 2013-05-31T21:17:26.490 回答