如何将参数传递给中继器中的用户控件
我有一个接受一些参数的用户控件,我需要在中继器中插入这个用户控件并从 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();
它不起作用,我收到 创建用户控件时出错...服务器标记格式不正确。
如何我可以做吗?谢谢
I have a usercontroll which accepts some parameter and I need to insert this usercontrol in repeater and pass a parameter from List<> to each one, I'm doing it like this:
<asp:Repeater ID="winnersRepeater" runat="server">
<ItemTemplate>
<uc:myControl ID="myControl" NodeId="<%# DataBinder.Eval(Container.DataItem,"Id")%>" runat="server" />
</ItemTemplate>
</asp:Repeater>
I do binding in PageLoad:
List<Winner> winners = new List<Winner>();
//...
winnersRepeater.DataSource = winners;
winnersRepeater.DataBind();
It doesn't work, I'm getting Error creating usercontrol... The server tag is not well formed.
How can I do it? thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里的技巧是使用引号 - 您使用双引号来打开和关闭此处的 NodeId 属性,并将字符串括在表达式中。您应该在一个地方使用单引号,在另一处使用双引号。
The trick here is with quotes - you are using double quotes both to open and close the NodeId property here, and to enclose the string in the expression. You should use single quotes in one place, and double in the other.
您可以处理 Repeater 的 ItemDataBound 事件。在您的处理程序中,您应该能够执行 FindControl("myControl") 并将 NodeId 值传递给它,而无需在标记中声明它。
You could handle the ItemDataBound event of the Repeater. In your handler you should be able to do FindControl("myControl") and pass to it the NodeId value without having to declare it in the mark-up.