在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属性。