我一直在尝试使用声明数据绑定ASP.NET,并在幕后发生的“魔术”中苦苦挣扎。
如何让它在ASP.Net 2.0中运行。这是在数据绑定FormView
控件内。
<asp:Label ID="RecipientsLabel" runat="server"
Text='<%# String.Join("; ", Eval("HtmlEncodedRecipients")) %>'>
</asp:Label>
注意:HtmlEncodedRecipients
是List<string>
属性。
我收到此错误:
最佳重载方法匹配 'string.Join(string,string [])'有 一些无效的论点
答案 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()
。