C# 在ASP.NET repeater控件的usercontrol中动态分配属性

C# 在ASP.NET repeater控件的usercontrol中动态分配属性,c#,asp.net,user-controls,C#,Asp.net,User Controls,我目前有一个repeater控件,在itemtemplate中有一个usercontrol。此usercontrol正确呈现,但我正在尝试将dataitem分配给repeater控件中的属性 <asp:Repeater ID="Repeater1" DataSourceID="EntityDataSource" runat="server"> <ItemTemplate> <uc1:Request ID="Request1" runat="serv

我目前有一个repeater控件,在itemtemplate中有一个usercontrol。此usercontrol正确呈现,但我正在尝试将dataitem分配给repeater控件中的属性

 <asp:Repeater ID="Repeater1" DataSourceID="EntityDataSource" runat="server">
    <ItemTemplate>
    <uc1:Request ID="Request1" runat="server" RequestId='<%# Eval("RequestId") %>' />
</ItemTemplate>

RequestId只是一个Int32。它只是没有分配它

我可以将eval放在itemtemplate中的usercontrol之外,它可以正确地输出正确的id

如果我删除整个评估,只需键入一个数字,那么它就可以正常工作

谢谢你的帮助

[更新]:问题已解决

我使用的是EntityDataSource,它会自动绑定到repeater。它在屏幕上打印出数据库中的所有信息,没有任何代码隐藏。但是当我把代码放在Repeater1.DataBind()后面时;然后它开始工作


我不知道为什么,但嘿,问题解决了。它现在成功地传递了值。我想这与页面的生命周期有关。

您是否在最后缺少了一个

更改如下:

RequestId='<%# Eval("RequestId") %> />
RequestId='/>

RequestId=''/>

您可以通过使用Repeater控件的ItemDataBound事件来实现这一点,这样您就可以设置控件的动态属性。

如果您只是使用int的Repeater集合进行绑定,您需要使用:

<uc1:Request ID="Request1" runat="server" RequestId='<%# Container.DataItem %>' />


不要忘记为repeater或有repeater控件的页面调用DataBind()。

您的代码中有一个输入错误。%>之后是否应该立即关闭?没有任何东西仍在工作。当我使用Eval时,没有设置RequestId。当我在usercontrol上面这样做时,就在开放空间中,它可以完美地打印在屏幕上。如果我硬编码这个数字,例如RequestId=“2”,它可以正常工作。但如果按照上面的方法操作,它就不起作用了。
 <asp:Repeater ID="Repeater1" DataSourceID="EntityDataSource" runat="server">
    <ItemTemplate>
    <uc1:Request ID="Request1" runat="server" RequestId='<%# Eval("RequestId") %>' />
</ItemTemplate>