.net 在基类中使用隐藏的输入变量跨回发持久化值

.net 在基类中使用隐藏的输入变量跨回发持久化值,.net,asp.net,asp.net-2.0,.net,Asp.net,Asp.net 2.0,在我的基础课上: public abstract class BaseUserControl : System.Web.UI.UserControl { protected System.Web.UI.HtmlControls.HtmlInputHidden MyID; //This is called when the page loads private void OnLoad() { MyID.Value = "testId"; } protected

在我的基础课上:

public abstract class BaseUserControl : System.Web.UI.UserControl
{
  protected System.Web.UI.HtmlControls.HtmlInputHidden MyID;

  //This is called when the page loads
  private void OnLoad()
  {
     MyID.Value = "testId";
  }

 protected void OnButtonClick(object sender, EventArgs e)
{
    string s = this.MyID.Value;
}

}
在从BaseUsercontrol继承的我的用户控件中,ascx具有:

<asp:Button id="btnTest" runat="server" OnClick="OnButtonClick" />


为什么我不能这样使用隐藏的输入变量呢???

如果您的.ascx中有一个id=MyID的HiddenInputField,而这正是您试图使用的,那么您就不会这样做

您将需要执行FindControl

或 您可能想提供更多关于为什么以及您想要实现什么的详细信息。
因为可能还有其他可能的方法来实现您正在尝试的操作。

HiddeniInputField位于基本用户控件中,而不在ascx标记中。它被声明为受保护并在同一个基本用户控件类中使用。您是在动态地将其添加到控件中,还是使用它的目的是什么?可能是我没有弄清楚。当你试图这样使用它时,到底发生了什么?你有错误吗?什么都没有发生吗?MyID在几次回发之后有一个空引用。您只是在回发期间尝试持久化值吗?为什么不使用viewstate?通过隐藏的输入变量,我可以从JS访问值