【问题标题】:DropDownList DataTextField on Navigation property导航属性上的 DropDownList DataTextField
【发布时间】:2011-01-30 22:57:42
【问题描述】:

我需要以下方面的帮助。

我从 Entity Framework 数据上下文中获取对象列表。

var list = context.EntityA;

EntityA 是主对象(包含主键),但有一个名为“EntityALanguages”的导航属性,其中包含特定于语言的属性。

现在我想将列表绑定到下拉列表,并且需要从下拉列表中设置 DataValueField 和 DataTextField 属性。

如何将 DataTextField 设置为导航属性的属性,例如:

this.ddl.DataValueField = "GUID";
this.ddl.DataTextField = "EntityALanguages.ShortDescription";

编辑: 导航属性“EntityALanguages”是一个集合,所以 EntityA -> EntityALanguages 是一个 1-n 关系

【问题讨论】:

    标签: asp.net entity-framework drop-down-menu navigation-properties datatextfield


    【解决方案1】:

    通过使用var list = context.EntityA;,您的导航属性将被延迟加载。试试var list = context.EntityA.Include("EntityALanguages");,这样你的导航属性就会出现。

    【讨论】:

    • 不,没有这样做。导航属性已正确加载。
    • DataBinding:EntityA 不包含名为“EntityALanguages.ShortDescription”的属性
    【解决方案2】:

    DropDownList 可能不支持属性树进行绑定。

    如果您想绑定,您可以执行以下操作:

    var items = context.Entity.Include("EntityALanguages").Select(row => new { Id = row.GUID, Name = row.EntityALanguages.ShortDescription}).ToList();

    ddl.DataTextField = "名称"; ddl.DataValueField = "Id";

    【讨论】:

      【解决方案3】:

      在您的实体 EntityALanguages 中,您可以添加这样的只读属性

      public readonly string EntityALanguagesShortDescription
      {
          get { return this.EntityALanguages.ShortDescription; }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多