首页 文章

ASP.NET:将值绑定到转发器内的自定义用户控件

提问于
浏览
3

我有一个ASP.NET控件,将数据绑定到转发器 . 在转发器内部,我有另一个自定义用户控件 . 我想基于当前绑定项将值传递给第二个控件 .

<asp:Repeater runat="server" ID="ProductList">
    <ItemTemplate>
        <p>Product ID: <%# Eval("ProductID") %></p>
        <myControl:MyCoolUserControl runat="server" ProductID='<%# Eval("ProductID") %>' />
    </ItemTemplate>
</asp:Repeater>

转发器项目模板使用Eval语句正确地打印出我的产品ID,但是当我做同样的事情将产品ID传递给MyCoolUserControl时,它不起作用(如果MyCoolUserControl上的ProductID是Nullable Int32 - 我可以调试它和它总是空的) .

我有什么想法可以做到这一点?

1 回答

  • 3

    我做了一个小测试,如果ProductID是一个字符串,我就可以使用它 . 在我将其更改为用户控件中的int后,我遇到了同样的问题 . 我在数据源中对转发器做了一个int.Parse并让它再次运行 . 检查传递给转发器数据源的ProductId是否为int类型 .

    Mytest应用程序 .

    string[] values = new string[]{ "12", "13" };
    
    MyRepeater.DataSource = from v in values
                            select new
                            {
                                ProdId = int.Parse(v)
                            };
    
    MyRepeater.DataBind();
    
    <asp:Repeater runat="server" ID="MyRepeater">
        <ItemTemplate>
            <My:control runat="server" ProductId='<%# Eval("ProdId") %>' />
        </ItemTemplate>
    </asp:Repeater>
    

    并在usercontrol中:

    public int? ProductId
    {
        set { MyLabel.Text = value.Value.ToString(); }
    }
    

相关问题