带有声明性数据的Eval绑定ASP.NET

时间:2009-07-14 19:12:47

标签: asp.net data-binding

我一直在尝试使用声明数据绑定ASP.NET,并在幕后发生的“魔术”中苦苦挣扎。

如何让它在ASP.Net 2.0中运行。这是在数据绑定FormView控件内。

<asp:Label ID="RecipientsLabel" runat="server" 
    Text='<%# String.Join("; ", Eval("HtmlEncodedRecipients")) %>'>
</asp:Label>

注意:HtmlEncodedRecipientsList<string>属性。

我收到此错误:

  

最佳重载方法匹配   'string.Join(string,string [])'有   一些无效的论点

3 个答案:

答案 0 :(得分:4)

如果您只是将DataItem转换为您期望的类型,我发现生活会轻松得多。这使得intellisense启动,所以你可以看到发生了什么。

((MyObject)Container.DataItem).HtmlEncodedRecipients

答案 1 :(得分:4)

如果是List,那么这就是你想要的:

String.Join("; ", ((List<string>)Eval("HtmlEncodedRecipients")).ToArray())

(要记住的是,如果你把一个Eval放在一个数据绑定字符串中,它会显示一个“漂亮”的值。但是如果你在一个表达式中使用它,它会返回类型对象,所以你必须施展它。

尽管如此,将内联设置得有点过于粗糙,所以这样做:

Text ='&lt;%#ConvertRecipients(Eval(“HtmlEncodedRecipients”))%&gt;'&gt;

并在你的代码隐藏中

string[] ConvertRecipients(object recipientObject)
{
    if(recipientObject is List<string>)
    {
        ...

答案 2 :(得分:3)

尝试将Eval("HtmlEncodedRecipients")投射到List并在其上调用.ToArray()