2013-08-29 103 views
0

我在获取和设置值时遇到问题,因为我在代码中引入了第三方面。试图获取/设置记录

以前我会做这个拿到/在记录设置:

public virtual string MyString { get; set;} 

,然后在我的部分:

public string MyString 
{ 
    get { return Record.MyString; } 
    set { Record.MyString = value; } 
} 

和NHibernate会保存在DB我的价值观(显然我的其他为简洁起见,此处不提供代码)。

现在我正在尝试做一个带有列表的复选框。我有这样一个复选框:。

public class MyPart : ContentPart<MyPartRecord> 
{ 
    public MyPart() 
    { 
     MyList = Enum.GetValues(typeof(MyEnum)) 
      .Cast<MyEnum>().Select(x => 
     { 
      return new SelectListItem { Text = x.ToString().ToUpper(), 
       Value = ((int)x).ToString() }; 
     }).ToList(); 
    } 

    public IList<SelectListItem> MyList { get; set; } 
    private string myCheckBox; 

    // Record class contains the following commented code: 
    // public virtual string MyCheckBox { get; set;} 

    // Trying to do this now here in MyPart class: 
    public string MyCheckBox 
    { 
     get 
     { 
      if (!string.IsNullOrEmpty(myCheckBox)) 
       return myCheckBox; 
      // Tried the following commented code to get value: 
      // Record.MyCheckBox = myCheckBox; 
      return string.Join(",", MyList.Where(x => x.Selected) 
       .Select(x => x.Value).ToArray()); 
     } 
     set 
     { 
      myCheckBox = value; 
      // Tried the following commented code to set value: 
      // Record.MyCheckBox = myCheckBox; 
     } 
    } 
} 

我只是不知道如何在这种情况下,分配值(获取/设置myCheckBoxMyCheckBox它被保存在数据库中为空

谢谢在

+0

尝试'Record.MyCheckBox =值' –

+0

@DStanley我在几天前试过:) – REMESQ

回答

0

彼时我刚刚摆脱部分,并只记录坚持 - 这让我做getset在视图模型,制定出更好的(并且是容易混淆)。

0

事先的任何帮助。在我看来,你会躲在基地virtual实施MyCheckBox

我觉得不是你宁愿override基地:

public override String MyCheckBox 
{ 
    get 
    { 
     if (!string.IsNullOrEmpty(myCheckBox)) 
      return myCheckBox; 
     // Tried the following commented code to get value: 
     // Record.MyCheckBox = myCheckBox; 
     return string.Join(",", MyList.Where(x => x.Selected) 
      .Select(x => x.Value).ToArray()); 
    } 
    set 
    { 
     myCheckBox = value; 
     // Tried the following commented code to set value: 
     // Record.MyCheckBox = myCheckBox; 
    } 
} 

从而成为变量而不是混淆它呢?

+0

这个覆盖将不起作用,因为'公共虚拟字符串MyCheckBox {get;组; }'在单独的记录类中。这是一个部分课程。 – REMESQ

+0

好吧,现在建议使用'Record.MyCheckBox'是有道理的。我没有抓住那部分。所以某处有'Part'类的实例。那么,什么是“记录”? “Part”类是否应该引用可用于执行诸如“myRecord.MyCheckBox = myCheckBox”之类的“Record”对象?将本地成员分配给实例成员? – DonBoitnott

+0

我输入错误。它应该是'MyPartyRecord',领带是公共类My Part:ContentPart {...}'。我在开始时展示了它是如何正常完成的(哪些工作正常),它只是将'myCheckBox'变成'MyCheckBox',这让我难以置信。 – REMESQ