【问题标题】: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。

          【讨论】:

            猜你喜欢
            • 2020-06-22
            • 2011-05-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-04
            • 1970-01-01
            相关资源
            最近更新 更多