代码之家  ›  专栏  ›  技术社区  ›  Eric

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

  •  0
  • Eric  · 技术社区  · 16 年前

    我有一个数据库列“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;
    

    如何解决这个阻抗不匹配问题,以便查询和提交都能工作?

    1 回复  |  直到 16 年前
        1
  •  3
  •   community wiki Craig Stuntz    16 年前

    与其更改列属性的类型,不如将其映射到新属性?

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

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