我确定在ASP.NET中的网页构建中是否选中了复选框。 当我在Page_Load方法中渲染网页时,我使用以下代码检查一些复选框:
checkbox1.Checked = true;
在页面上我有按钮来处理表格中的数据,点击这个按钮我检查是否选中了复选框:
if(checkbox1.Checked == true)
{
//do something
} else {
//do something else
}
但是我发现从Checked属性获得的值总是与我在第一步中设置的值相同。该属性永远不会返回CheckBox当前状态的值。 这是我的问题:为什么?
我通过以不同方式设置检查来绕过该问题:
checkbox1.Attributes.Add("checked","true");
我不喜欢什么时候有效,但我不知道为什么这样,请告诉我我误解的原因。
答案 0 :(得分:2)
在您的加载事件中,您可能会错过IsPostBack
的部分内容,因此每次都会执行该操作并最终重写您的值。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// do initial initialization here
}
// this happens even during a postback
}
答案 1 :(得分:1)
在执行控件事件处理程序(例如Button_Click
)之前,您确实知道每次回发后都会运行Page_Load吗?您可能每次加载页面时都会重置值。您应该在if语句中编写初始化代码,以确保不会覆盖已发布的值。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
checkbox1.Checked = true;
}
}
另外,
if(checkbox1.Checked == true)
{
//do something
} else {
//do something else
}
由于checkbox1.Checked
值已经是布尔值,因此无需将其与true
进行比较。当你口头阅读代码时,它就像是在说#34;如果选中了复选框,我刚才说的前一个陈述是真的"。你可以缩短它,使其更像是"如果选中复选框"。
if(checkbox1.Checked)
{
//do something
} else {
//do something else
}