c# - 在回传中保留单选/复选框值?

标签 c# asp.net checkbox textbox radio-button

有些东西我不了解 ASP 对象。我在更新面板中有一个按钮。在同一页上,我有一个复选框、一个单选按钮和一个文本框(在更新面板之外)。当我点击我的按钮时,我访问了所有这三个对象。文本框能够保留他的文本值。但是当我检查检查状态时,单选/复选框总是返回 false。

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

有人可以帮我找出为什么 radio /检查不会返回真正的检查状态吗?提前致谢!

编辑: 我尝试在一个简单的 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();
}

关于c# - 在回传中保留单选/复选框值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271654/

相关文章:

asp.net - 如何在 iTextSharp 中显示水平线

c# - Asp.NET 实时游戏

javascript - 动态 "noneSelectedText"用于多选 jquery 框

javascript - 为元素内的复选框创建标签

javascript - 使用 Angular JS 对表单提交进行复选框验证

c# - 在 C# 中反序列化多个具有相同名称的 XML 元素

c# - 如何在 C# 中使用非常大的字典?

c# - 使用 ItemsSource 时访问 MenuItem 中的子项,C#\WPF

c# - 使用 MVVM 通过 ViewModel 属性冒泡 INotifyPropertyChanged 事件的好方法是什么?

asp.net - 仅在本地主机上使用 Fiddler