在ASP.NET MVC中,如何编写模型,使视图中的复选框对应于数据库中的整数?

时间:2020-03-06 14:43:37  来源:igfitidea点击:

我有一个数据库列" WantsReply",该列在逻辑上保留一个布尔值(位),但不幸地实现为整数。任何非零值表示"是",零表示"否"。

如果我写

class Entry {
   [Column] public int WantsReply {get; set;}
}

在我的模型中,然后使用将其映射到视图中的复选框

Html.CheckBox( "WantsReply", View.Model.WantsReply )

然后在提交视图时出现转换错误。另一方面,如果我写

[Column] public bool WantsReply {get; set;}

然后视图提交工作正常,但是当我运行类似的查询时,我得到了一个不同的转换错误

from entry in Entries select entry;

如何解决此阻抗不匹配问题,以便同时进行查询和提交?

解决方案

为什么不将其映射到新的属性,而不是更改column属性的类型?

public partial class Entry {
    public bool WantsReplyAsBool
    {
        get
        {
            return WantsReply != 0;
        }
        set
        {
            if (value)
            {
                WantsReply = 1;
            }
            else
            { 
                WantsReply = 0;
            }
        }
    } 
}

如果愿意,整数属性可以是私有的。在视图中使用bool属性。