Сохранение значений радио / флажков при обратной передаче? - PullRequest
2 голосов
/ 25 ноября 2011

Есть что-то, чего я не получаю с объектами ASP. У меня есть кнопка в панели обновления. На той же странице у меня есть флажок, радио-кнопка и текстовое поле (за пределами панели обновления). Когда я нажимаю на кнопку, я получаю доступ ко всем этим трем объектам. Текстовое поле может сохранить его текстовое значение. Но радио / флажок всегда возвращают false, когда я проверяю там проверенное состояние.

Конечно, моя форма сложнее, чем я только что сказал. Это включает в себя Javascript и usercontrols. Мне удалось использовать Request.Form, чтобы получить значение моего чекбокса / радио, но я не нахожу это решение достаточно точным.

Кто-то может помочь мне выяснить, почему радио / проверка не возвращают реальное проверенное состояние? Заранее спасибо!

Редактировать: Я пытался следовать на простой странице aspx, и, кажется, работает:

 <asp:CheckBox runat="server" ID="checkbox" />

    <asp:RadioButton runat="server" ID="radio1" GroupName="radio" CssClass="testRadio" />
    <asp:RadioButton runat="server" ID="radio2" GroupName="radio" CssClass="testRadio" />

    <asp:TextBox runat="server" ID="text" />


    <asp:ScriptManager runat="server">
    </asp:ScriptManager>

    <asp:UpdatePanel runat="server">
        <ContentTemplate>
            <asp:Button runat="server" ID="test_but" OnClick="test_click" />

        </ContentTemplate>
    </asp:UpdatePanel>

И тогда я могу получить доступ ко всем свойствам в test_click (). Так что в моих настоящих формах есть что-то, что ломает все остальное. Я попытался добавить немного javascript на мою тестовую страницу, и это, кажется, тоже работает.

1 Ответ

2 голосов
/ 25 ноября 2011

Известная проблема с этими элементами управления. Используйте методы SaveViewState и LoadViewState для хранения и извлечения этих значений.

http://www.4guysfromrolla.com/articles/110205-1.aspx

protected override void LoadViewState(object savedState)
{
    base.LoadViewState(savedState);

    if (ViewState["Checked"] != null)
        checked = (bool)ViewState["Checked"];
}

protected override object SaveViewState()
{
    ViewState["Checked"] = checked;

    return base.SaveViewState();
}
...