代码之家  ›  专栏  ›  技术社区  ›  user6788933

在Web窗体中使用c#将参数传递给用户控件

  •  0
  • user6788933  · 技术社区  · 7 年前

    在aspx页面中,我试图为集合中的每个项目显示用户控件,但在尝试设置UserControl参数时,C#似乎被忽略:

    <%foreach (Fetus item in this.pregnancy.Fetus) {%>
        //this returns a GUID:
        "<%= item.Id.ToString() %>" 
    
        //this does not work, returns the characters between "" like < %= item.Id.ToString()%>:
        <uc1:AntepartumCTGChart runat="server" ID="AntepartumCTGChart" FetusId="<%= item.Id.ToString()%>" />
    <% } %>
    

    我希望这能奏效,怎么了?

    1 回复  |  直到 7 年前
        1
  •  1
  •   VDWWD    7 年前

    你必须使用 data binding expression

    <uc1:AntepartumCTGChart runat="server" ID="AntepartumCTGChart" FetusId='<%# item.Id.ToString()%>' />
    

    但你必须打电话 DataBind() 在代码隐藏中实现。

    您也可以使用中继器

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <uc1:AntepartumCTGChart runat="server" ID="AntepartumCTGChart" FetusId='<%# Eval("id").ToString()%>' />
        </ItemTemplate>
    </asp:Repeater>
    

    然后在代码隐藏中将数据绑定到它

    Repeater1.DataSource = pregnancy.Fetus;
    Repeater1.DataBind();