我在获取和设置值方面遇到了问题,因为我在代码中引入了第三个方面。
以前我会这样做以获取/设置在记录中:
public virtual string MyString { get; set;}
然后在我的部分:
public string MyString
{
get { return Record.MyString; }
set { Record.MyString = value; }
}
并且NHibernate会将我的值保存在数据库中(显然,为简洁起见,此处未提供其他代码)。
现在我正在尝试使用列表执行复选框。我有一个复选框:
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;
}
}
}
我只是不知道如何在这种情况下分配值(将myCheckBox
设置为MyCheckBox
。它在数据库中保存为null。
提前感谢您的帮助。
答案 0 :(得分: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;
}
}
从而成为变量而不是混淆它?
答案 1 :(得分:0)
我最终摆脱了这个部分,只留下了一条记录 - 这让我可以在一个视图模型中执行get
和set
,这样做效果更好(并且不那么令人困惑) )。