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

时间:2018-02-15 15:54:12

标签: asp.net razor webforms aspx-user-control

在aspx页面中,我试图为集合中的每个项目显示一个用户控件,但是当tryign设置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 个答案:

答案 0 :(得分:1)

您必须使用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();