【问题标题】:ASP.net checkbox always checkedASP.net 复选框始终选中
【发布时间】:2011-04-19 07:05:24
【问题描述】:
<asp:CheckBox ID="isSubscribed" runat="server" /> Subscribe to mailing list?<br /><br />
<asp:Button runat="server" CssClass="btn" ID="btnPrefUpdate" OnClick="updatePrefs" Text="Update" /><br /><br />

这会在后面的代码中触发:

protected void updatePrefs(object sender, EventArgs e)
{
    Response.Write(isSubscribed.Checked);
    Response.End();
}

但事实总是如此!不管有没有检查!我知道我做错了,有人可以告诉我如何正确访问这个值吗?

【问题讨论】:

  • 您的 Page_Load 事件中是否有任何将其设置为 true 的内容?你试过放“isSubscribed.Checked.ToString”吗?
  • 啊,是的,在我的页面加载中,我有 isSubscribed.Checked = Master.isSubscribed;如何让点击事件在该事件之前运行?
  • 作为旁注,我认为 Respose.Write 是邪恶的,应尽可能避免。它可以让调试你的代码成为一场噩梦:(

标签: c# asp.net checkbox


【解决方案1】:

你做对了。布尔属性 Checked 应该只说 True 或 False(我什至测试过它)。您的 Page_Load 是否对复选框进行了操作?换句话说,复选框的值是否在回发发生时以某种方式(重新)设置(按钮单击的回发)。

在您的 Page_Load 方法中,您可以包括:

if (!this.IsPostBack)
{
// Set default or loaded values for controls
}

【讨论】:

  • 是的,愚蠢地将其设置为页面加载中的配置文件值,如何在按钮单击事件之前阻止该代码加载?
  • @Tom Gullen 看到我的答案,或者你可以在 aspx 页面中设置它
  • if (!this.IsPostBack) // 做你的事。
【解决方案2】:

就像@Curt 所说,在我看来,您的 page_load 中有一些内容。如果您在 Page_Load 中设置值,请确保它在以下 if 语句中

if(!Page.isPostBack)
{
    isSubscribed.Checked = true; 
}

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    相关资源
    最近更新 更多