2011-01-13 3 views
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 void OnButtonClick(object sender, EventArgs e) 
{ 
    string s = this.MyID.Value; 
} 

} 

В моей пользовательский элемент управления, который наследуется от BaseUsercontrol ASCX имеет:

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

Почему может» t Я использую скрытую входную переменную таким образом?

+0

Что именно происходит, когда вы пытаетесь использовать его таким образом? Вы получили сообщение об ошибке? Ничего не происходит? – Greg

+0

MyID имеет нулевую ссылку после нескольких обратных ссылок – DotnetDude

+0

Вы просто пытаетесь сохранить значения во время обратной передачи? Почему бы не использовать viewstate? –

ответ

0

Если у вас есть HiddenInputField в вашем .ascx с id = MyID, и это то, что вы пытаетесь использовать, то это не то, как вы это делаете.

Вам понадобится FindControl.

or Возможно, вы захотите предоставить более подробную информацию о том, почему и чего именно вы хотите достичь. Потому что могут быть другие возможные способы достижения того, что вы пытаетесь сделать.

+0

HiddenInputField находится в базовом пользовательском элементе управления, а не в разметке ascx. Он объявляется защищенным и используется в пределах одного базового пользовательского класса управления. – DotnetDude

+0

Вы динамически добавляете это в свой контроль или как его использовать? Может быть, я не получаю четкой картины. – gbs