我无法看到我在哪里出错,所以我正在寻求帮助。
我试图在转发器中使用带有参数的自定义控件。调试时,该参数始终为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。
答案 0 :(得分:0)
问题是当按钮回发发生时,数据绑定值会丢失。仅在具有DataBind()调用的页面请求的持续时间内设置属性值。按钮单击是新页面请求。 .NET控件在ViewState中存储绑定值,因此它们在回发时可用。您可以通过更改属性的存储方式来执行相同的操作。
public string paddockName {
get { return Convert.ToString(ViewState("paddockName")); }
set { ViewState("paddockName") = value; }
}