回发后,复选框不会更改其选中的值

Max*_*mus 2 c# asp.net checkbox checked

我有一个复选框,从中我得到了检查值,但第一次工作得很好但后来我在回发后根本没有改变,总是返回true.

我只是这样做

bool accepted = this.chkAccepted.Checked;
Run Code Online (Sandbox Code Playgroud)

我的复选框位于控件内.不是直接在页面中转发.

<asp:CheckBox ID="chkAccepted" runat="server" Checked="true"/>Accepted
Run Code Online (Sandbox Code Playgroud)

第一次启动check = true.我点击我的按钮第一次回发并正常工作,然后我取消选中,单击我的按钮,但检查仍然是真的.

第一次启动check = true.我取消选中复选框,然后我点击我的按钮第一次回发并正常工作,然后我检查,单击我的按钮但检查结果为真,然后我再次取消选中并始终检查=真.

那么,这有什么问题呢?

我在同一个控件中有另一个复选框,没有初始化Checked属性,总是正常工作.那我该如何解决这个问题呢?

Max*_*mus 5

好吧,经过一些研究,我意识到这是一个.NET漏洞.因此,当在aspx中将复选框的Checked属性设置为true时,会导致问题.所以,我删除了这个属性,在Page_Load事件(服务器端)中,我在Page.IsPostBack == false中初始化了复选框为true.这解决了我的问题.

  • 只是为了未来的读者(如果你愿意的话,让我确认这是一个"特殊的情况" - >我会要求在需要时道歉).您是否介意将您的整个代码(相关部分,我的意思)与其准确的适用性一起编写?对于没有经验的ASP开发人员来说,整个问题(及其答案)可能会让人感到困惑(这对我来说很困惑,而且我有一些经验).请记住,SO的重点是提供清晰可靠的信息,这可能对某人有用. (3认同)
  • 是的,我明白了。我没有得到的是错误。你做了什么?为什么这不能立即起作用?(发布代码非常快:“之前”(错误)和“之后”(您的更正))。此外,您应该在答案中包含最后一条评论:未来的读者可能不会立即理解您确实需要每次检查复选框状态,因为如果没有 AutoPostBack(或等效方法),后面的代码不知道检查状态的变化(看看你从 user3140451 那里得到的答案,确信不使用 AutoPostBack 是值得推荐的)。 (2认同)