<ItemTemplate>
<tr> <td><span><%#Eval("str4") %></span></td> </tr>
</ItemTemplate>
以上是Repeater空间中一部分
下面是后天cs代码,在Page_Load函数中的
protected Dictionary<string, string> dic = new Dictionary<string, string>();
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
dic.Add("str1", "this is str1");
dic.Add("str2", "this is str2"); dic.Add("str3", "this is str3"); dic.Add("str4", "this is str4"); dic.Add("str5", "this is str5"); dic.Add("str6", "this is str6");
Repeater1.DataSource = dic;
Page.DataBind(); }
}
但是我在前台调用Eval()函数出错了。does not contain a property with the name 'str4'
是不是我前台使用绑定表达式的时候,str4这个key值不在的?还是什么问题,求高手解答,谢谢
绑定方式不对,Dictionary 应该使用><%#Eval("key")%>和<%#Eval("value")%>绑定.
例子:
<asp:Repeater ID="rptDemo" runat="server">
<HeaderTemplate>
<table>
<tr>
<td>demo</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("key")%>和<%#Eval("value")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Dictionary<key,value>,
Eval需要绑定它的key,而不是你添加的数据!如果是一张表则比较好理解,它绑定的是表中的列,而非记录!
所以<%#Eval("str4") %> 应改为 <%#Eval("Key") %>
Dictionary是键值对,绑定的时候也键值对。