【问题标题】:ASP.NET C# - Data binding on a object attribute that is within another objectASP.NET C# - 另一个对象内的对象属性上的数据绑定
【发布时间】:2013-05-07 21:07:17
【问题描述】:
我很难尝试在 DetailsView EditTemplateField 中绑定属性。这是我的数据结构:
Class1{
public int idClass { get; set; }
public Class2 classObject { get; set; }
}
Class2 {
public int idClass2 { get; set;}
}
Class1 是与下拉列表关联的 ObjectDataSource DataObjectTypeName。
我正在尝试将 Dropdownlist 值绑定到 idClass2,如下所示:
Bind("classObject.idClass2");
【问题讨论】:
标签:
c#
asp.net
data-binding
objectdatasource
detailsview
【解决方案1】:
你不能。 AFAIK 您只能将 Eval(单向绑定)与嵌套对象一起使用。无论如何,您可以做的是使用新属性修改第一个类:
Class1{
public int idClass { get; set; }
public Class2 classObject { get; set; }
public int idClass2 {
get { return classObject.idClass2; }
set { classObject.idClass2 = value; }
}
}
并绑定它:Bind(idClass2)
【解决方案2】:
绝对有必要将 idClass2 放在一个单独的类中吗?如果这是 Class2 中唯一的属性,为什么不将属性添加到 Class1 中?
虽然你
否则我认为你需要提取对象Class2,然后像这样绑定它
var _classObject = class1.classObject;
Bind("_classObject.idClass2");
【解决方案3】:
你可以制作一个“普通”的对象
Class1{
public Class2 class2 { get; set; }
public int Var { get; set; }
public int InnerVar { get { return class2.Var; } }
}
Class2{
public int Var { get; set; }
}
那么就可以使用 Class1 InnerVar 来访问 Class2 中的 Var。
【解决方案4】:
当您创建classObject 的对象时,您还应该创建位于其中的所有类的对象。这样你就可以访问classObject.idClass2,如果你不做idClass2的对象,你会得到Null Exception。