在回发时保持单选/复选框值

本文关键字:单选 复选框 | 更新日期: 2023-09-27 18:15:50

有一些东西我没有得到与ASP对象。我在更新面板中有一个按钮。在同一页面上,我有一个复选框,一个单选按钮和一个文本框(在更新面板之外)。当我点击按钮时,我访问了这三个对象。文本框能够保持其文本值。但是当我选中选中状态时,单选/复选框总是返回false。

当然,我的表格比我刚才说的要复杂得多。它涉及到Javascript和用户控件。我设法使用了请求。表单来获取我的复选框/单选的值,但我觉得这个解决方案不够简洁。

有人可以帮助我找到为什么无线电/检查不会返回那里真正的检查状态?提前感谢!

编辑:我试着在一个简单的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到我的测试页面,它似乎也工作。

在回发时保持单选/复选框值

这些控件的已知问题。使用SaveViewState和LoadViewState方法来存储和检索这些值。

https://web.archive.org/web/20211020153240/https://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();
}