ViewState ["sample"] Переменная не сохраняет значение при обратной передаче в составном элементе управления - PullRequest
0 голосов
/ 19 октября 2010

Я создал составной элемент управления с примерами деталей следующим образом.По сути, при первой загрузке страницы элемент управления устанавливает переменную состояния просмотра, и проблема заключается в том, что при обратной публикации (при нажатии кнопки) переменная ViewState имеет значение null.Я много исследовал, и я не могу найти решение.Я проверил все статьи, рекомендованные Microsoft, а также от других разработчиков.Этот подход, кажется, работает для всех, и я не могу понять, что я делаю неправильно.Если кто-то может помочь, я был бы очень признателен.

PS: Этот код может не работать, поскольку он только для иллюстративных целей.но это именно то, что я делаю в своем коде.

Public class Test : CompositeControl
{
    private Button btnTest = new Button();
    public string TestViewState
    {
        get
        {
            string s = (string)ViewState["test"];
            return (s == null) ? String.Empty : s;
        }
        set
        {
            ViewState["test"] = value;
        }
    }

    private void set()
    {
        TestViewState = "test";
    }

    protected void Page_Load(object sender, EventArgs e)
    {  
        if(!Page.IsPostBack)
            set();  
    }

    protected override void RecreateChildControls()
    {
        EnsureChildControls();
    }

    protected override void CreateChildControls()
    {
         base.Controls.Clear();  
         btnTest.ID = "btnTest";
         btnTest.Click += new EventHandler(btnSubmitTest_Click);

         if (!ChildControlsCreated)
         Controls.Add(btnTest);      

        base.CreateChildControls();
    }

    protected override void Render(HtmlTextWriter writer)
    {
        btnSumbit.Render(writer);
    }

    protected void btnSubmitTest_Click(object sender, EventArgs e)
    {
        string test = TestViewState; // Viewstate value is null here!!!!!!
    }
}

Ответы [ 2 ]

0 голосов
/ 20 октября 2010

Хорошо, enableviewstate было отключено на уровне web.config другим членом команды.Рад, что нашел это.Спасибо Артуру за подтверждение, что он сработал для тебя.

0 голосов
/ 19 октября 2010

Вы уверены, что вызывается Page_Load? Насколько я помню, «нотация» работает только на страницах и пользовательских элементах управления (не проверял). Попробуйте переопределить:

protected override void OnLoad(EventArgs e)
{
    ...
}

Проверьте это с помощью отладчика.

...