我有两个 viewState 属性。
一个是一个List<MyObject> MyObjects
另一个是MyObject SelectedObject
每当用户从列表中选择一个对象时,我都会将其分配给 SelectedObject,如下所示:
SelectedObject = MyObjects.Where(x=>x.MyId ==IdSelectedInUI)
这使我可以轻松操作SelectedObject
.
现在,当我更改SelectedObject
的属性时,如何将这些属性分配回列表中的原始对象?我正在考虑使用ref
,但无法完全弄清楚。
编辑
所有对象都是类,而不是结构。
所以,这就是我所拥有的:
//Children are of type =List<MyParentObject.ChildObject>
public MyParentObject MyParent
{
get
{
if (ViewState["MyParent"] == null)
{
MyParent= GetItemsFromDatabase();
}
return (TaskInfo)ViewState["MyParent"];
}
set
{
ViewState["MyParent"] = value;
}
}
public MyParentObject.ChildObject SelectedChild
{
get
{
return (MyParentObject.ChildObject)ViewState["Child"];
}
set
{
ViewState["Child"] = value;
}
}
protected onButtonClick()
{
SelectedChild = MyParent.Children.Where(x=>x.Child_Id == Convert.ToInt32(txt.Text)).FirstOrDefault();
SelectedChild.Property2 = "test2" //OldValue "test1"
//now if I run
MyParent.Children.Where(x=>x.Child_Id ==Convert.ToInt32(txt.Text)).Select(x=>x.Property2) //Shows "test1" and I expect "test2"
}
}