我有一个字典(让我们称之为信息)我试图绑定到DataList(我们称之为目录)。字典声明如下:
Dictionary<string, string> info = new Dictionary<string, string>(){
{"AdvertisementID", "1"},
{"CompanyName", "Test"},
//More elements
};
现在,我将Dictionary绑定到DataList,如下所示:
directory.DataSource = info;
directory.DataBind();
我的asp代码如下:
<asp:DataList ID = "directory" runat="server" RepeatColums="3" RepeatDirection="Horizontal" DataKeyField="Key">
<ItemTemplate>
//HTML Formatting
<%# DataBinder.Eval(Container.DataItem, "CompanyName") %>
</ItemTemplate>
</asp:DataList>
无论出于何种原因,都找不到“CompanyName”。当输出Container.DataItem.ToString()时,出现的只是AdvertisementID(字典中的第一件事)。我做错了什么?
编辑:我还想提一下,我试图实施此解决方案无济于事: Binding DataList to Dictionary
编辑2:我想要完成的是以下内容:
我从字典中的数据库中提取了大量信息。这个字典像Dictionary一样设置,都是字符串。我正在尝试将此信息输出到网页。
编辑3 使用下面的解决方案(绑定对象列表而不是字典),我的asp代码仍然找不到属性“CompanyName”。对象及其中的所有字符串都出现在调试器的DataItem中。
答案 0 :(得分:3)
你不能像这样使用词典。字典上的项目为KeyValuePair
,只有可用的属性为Key
和Value
。
因此,只有2个有效选项是
<%# DataBinder.Eval(Container.DataItem, "Key") %>
或者
<%# DataBinder.Eval(Container.DataItem, "Value") %>
你可能想要更好地解释你想要达到的目标,因为这可能不足以解决你的问题。
修改强>
你通常会有类似的东西
public class Info
{
public int AdvertisementID { get; set; }
public string CompanyName { get; set; }
//More elements
}
然后
IList<Info> infoList = GetList();
directory.DataSource = infoList;
directory.DataBind();
如果你实现类似的东西,你可以保持你的html
答案 1 :(得分:0)
请尝试使用Key
和Value
。
(Value
代替CompanyName)