Asp.net 使用字典绑定转发器<;字符串、字典<;int,[object]>;

Asp.net 使用字典绑定转发器<;字符串、字典<;int,[object]>;,asp.net,dictionary,repeater,eval,bind,Asp.net,Dictionary,Repeater,Eval,Bind,我是.NET新手,所以我正在努力解决这个问题。我有一个内容页,带有转发器控件。我有一本字典,这是一本字典。我希望中继器控件内的控件的值可以从对象属性中获取-候选名称,应该是object.CandName,候选电话应该是object.phone等等 我不知道如何对这类词典使用Eval。大多数示例都指向Eval(“Value”),但它没有为我提供正确的值。请帮忙 <asp:Content ID="Content2" ContentPlaceHolderID="content" Runat="S

我是.NET新手,所以我正在努力解决这个问题。我有一个内容页,带有转发器控件。我有一本字典,这是一本
字典。我希望中继器控件内的控件的值可以从对象属性中获取-候选名称,应该是
object.CandName
,候选电话应该是
object.phone
等等

我不知道如何对这类词典使用
Eval
。大多数示例都指向
Eval(“Value”)
,但它没有为我提供正确的值。请帮忙

<asp:Content ID="Content2" ContentPlaceHolderID="content" Runat="Server">
  <div id="rcontent"> 
    <table>
      <tr>
        <td>
          <asp:Label ID="lblerror" runat="server" Text="" Visible="true" CssClass="alert"></asp:Label>
        </td>
      </tr>
    </table>
    <div id ="rptdiv">
      <asp:Repeater ID="Repeater1" runat="server" EnableViewState="false">
        <ItemTemplate>
          <div id="Div3"> 
            <table class="GridViewStyleNoBorder" width=750px cellspacing="0" border="0" >
              <tr>
                <td class="PagerStyle" colspan="4"> 
                  <asp:Label ID="lblName" Runat="server"
Text='<%= Need the value of the [object].objectproperty from dictionary here %>' />
                </td>
              </tr>
            </table>
          </div>
我是否应该使用from codebehind,我是否可以在aspx页面中不执行
Eval(“”)


提前感谢您的帮助。

您不能只使用一个中继器。由于容器中有容器,因此中继器中需要一个中继器:

<asp:Repeater ID="Repeater1" runat="server" EnableViewState="false">
<ItemTemplate>
<div id="Div3"> 
    <table class="GridViewStyleNoBorder" width=750px cellspacing="0" border="0" >
    <asp:Repeater ID="Repeater2" runat="server" DataSource='<%# Eval("Value")' >
      <ItemTemplate>
    <tr>
    <td class="PagerStyle" colspan="4"> 
         <asp:Label ID="lblName" Runat="server"
        Text='<%# Eval("Name") %>' />
    </td>
    </tr>

      </ItemTemplate>
    </asp:Repeater>


    </table>
    </div>
</ItemTemplate>
</asp:Repeater>

如果
CandIntDetails
是一本
字典
,则需要从中提取要用作中继器数据源的特定集合。原因是您希望呈现一组
InterviewFeedback
对象,而
CandIntDetails
不是
CandIntDetails
可能看起来像这样:

{
    46: {
        0: [InterviewFeedback],
        1: [InterviewFeedback],
        2: [InterviewFeedback]
    }
}
Repeater1.DataSource = CandIntDetails[ReqCategoryID].Values;
从你的帖子中不清楚内部或外部字典的键是什么,所以这是推测性的。如果外部键是类别ID(不确定为什么
GetCandidatesforReqCategory
会返回类似的结果),并且如果您不关心内部字典键,则可以这样提取数据源:

{
    46: {
        0: [InterviewFeedback],
        1: [InterviewFeedback],
        2: [InterviewFeedback]
    }
}
Repeater1.DataSource = CandIntDetails[ReqCategoryID].Values;

这将使您的数据源成为
InterviewFeedback
对象的直接集合。一旦这是您的数据源,您就可以
Eval
访问
InterviewFeedback
对象的属性。

您应该更准确地描述数据的格式。在某一点上,你说这是一本
词典
,在另一点上,你暗示你正在使用一本
词典
。字典到底包含什么?您希望输出的内容是什么?您希望按字典键对内容进行分组,还是希望访问特定键的所有值?它是:dictionary(int,dictionary(int,InterviewFeedback));我想访问和显示特定键的所有值-每行都需要访问和显示所有值。感谢您的建议。我添加了另一个Repeater,但无法直接访问该值,因为Dictionary的值是一个业务对象。所以我在代码背后做了这件事。我能够获得显示的记录值。但它只显示一条记录。它总共有3条记录,但显示第一行,但不显示其余的。我是否应该在某个地方循环,我是否遗漏了什么。谢谢你的建议。现在工作。