代码首先使用EF多对多开发如何将数据绑定到转发器?

时间:2011-10-21 03:08:16

标签: asp.net entity-framework many-to-many

BlogPost和Category-many关系,如果数据集直接绑定转发器,现在如何使用首先开发的代码绑定转发器?

public class BlogPost
    {
        public int BolgID
        {
            get;
            set;
        }

        public int ID
        {
            get;
            set;
        }

        public string Title
        {
            get;
            set;
        }

        public virtual ICollection<Category> Category
        {
            get;
            set;
        }
    }

public class Category
    {
        public int ID
        {
            get;
            set;
        }

        public string Title
        {
            get;
            set;
        }

        public virtual ICollection<BlogPost> BlogPost
        {
            get;
            set;
        }
}



   using(MyDemoContext context = new MyDemoContext())
                {
                    DbSet<BlogPost> post = context.Set<BlogPost>();
                        var v = post.Include(p=>p.Category).Where(p=>p.ID==5).ToList();
                        Repeater1.DataSource = v;
                        Repeater1.DataBind();
                }

                                                                           BlogID                         BLOGTITLE                         CategoryTitle //类别的标题                     

        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td><%# Eval("ID")%></td>
                <td><%# Eval("Title")%></td>
                <td><%# Eval("")%></td>//here how to bind Category.Ttitle?
            </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>

        </asp:Repeater>

如何获得此结果:

BlogID  BlogTitle  CategoryTitle

   5       test         C#

   5       test         asp.net

   5       test         VB

1 个答案:

答案 0 :(得分:0)

Catgory和BlogPost有很多关系,因此在博客文章中会有多个类别。我不确定你想在这里显示哪个类别标题 - 通常,我可能会显示逗号分隔列表(或者可能是项目符号列表),这可以通过嵌套转发器来实现。例如,

<ItemTemplate>
   <tr>
     <td><%# Eval("ID")%></td>
     <td><%# Eval("Title")%></td>
     <td>
        <asp:Repeater runat="server" ID="C" DataSource='<%# Eval("Category") %>'>
           <ItemTemplate><%# Eval("Title") #></ItemTemplate>
           <SeparatorTemplate>, </SeparatorTemplate>
        </asp:Repeater>
     </td>
   </tr>
</ItemTemplate>

Diclaimer:未经测试的代码

Noe上面的模板会生成逗号分隔列表,但您可以根据需要调整布局。