我有一个usercontroll接受一些参数,我需要在转发器中插入此usercontrol并从List<>传递参数对于每一个人,我这样做:
<asp:Repeater ID="winnersRepeater" runat="server">
<ItemTemplate>
<uc:myControl ID="myControl" NodeId="<%# DataBinder.Eval(Container.DataItem,"Id")%>" runat="server" />
</ItemTemplate>
</asp:Repeater>
我在PageLoad中绑定:
List<Winner> winners = new List<Winner>();
//...
winnersRepeater.DataSource = winners;
winnersRepeater.DataBind();
它不起作用,我得到Error creating usercontrol... The server tag is not well formed.
我该怎么办?感谢
答案 0 :(得分:5)
这里的技巧是引号 - 你在这里使用双引号来打开和关闭NodeId属性,并将字符串括在表达式中。你应该在一个地方使用单引号,在另一个地方使用双引号。
答案 1 :(得分:2)
您可以处理Repeater的ItemDataBound事件。在你的处理程序中,你应该能够执行FindControl(“myControl”)并将NodeId值传递给它,而不必在标记中声明它。