1

我有一个字典(我们称之为信息),我试图绑定到一个 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:我想要完成的是以下内容:

我有一堆从字典中的数据库中提取的信息。这个字典的设置就像字典一样,都是字符串。我正在尝试将此信息输出到网页。

编辑 3 使用下面的解决方案(绑定对象列表而不是字典),我的 asp 代码仍然找不到属性“CompanyName”。该对象和其中的所有字符串都出现在调试器的 DataItem 中。

4

2 回答 2

3

你不能像那样使用字典。字典上的项目是KeyValuePair并且只有可用的属性是KeyValue

因此,仅有的 2 个有效选项是

<%# DataBinder.Eval(Container.DataItem, "Key") %>

或者

<%# DataBinder.Eval(Container.DataItem, "Value") %>

您可能想更好地解释您要达到的目标,因为这可能不足以解决您的问题。

编辑

你通常会有类似 tis

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 不变

于 2013-06-05T16:14:13.290 回答
0

尝试使用KeyandValue代替。

Value而不是公司名称)

于 2013-06-05T16:12:29.117 回答