将值绑定到转发器内的自定义控件

时间:2014-07-23 16:12:30

标签: c# asp.net repeater ascx

我无法看到我在哪里出错,所以我正在寻求帮助。

我试图在转发器中使用带有参数的自定义控件。调试时,该参数始终为null,即使同一表达式返回上一行代码中的数据。

在我的控制范围内,我有:

public string paddockName { get; set; }

我在我的asp.net页面上将其分配为:

<mp:Historical runat="server" paddockName='<%# Eval("Name") %>' />

我按照下面的说法编写了上一行代码,它运行正常,因此表达式是正确的。

<asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'></asp:Label>

我已经看到上一个问题ASP.NET: Bind a value to a custom user control inside a repeater几乎与我的问题完全相同,但答案只是说&#34;我做了一个小测试,如果产品ID是一个字符串。&#34;并没有帮助我弄清楚他们如何让它在调试时停止为null。

1 个答案:

答案 0 :(得分:0)

问题是当按钮回发发生时,数据绑定值会丢失。仅在具有DataBind()调用的页面请求的持续时间内设置属性值。按钮单击是新页面请求。 .NET控件在ViewState中存储绑定值,因此它们在回发时可用。您可以通过更改属性的存储方式来执行相同的操作。

public string paddockName {
    get { return Convert.ToString(ViewState("paddockName")); }
    set { ViewState("paddockName") = value; }
}