.net - ASP.NET CheckBox 状态和 PostBack

标签 .net asp.net checkbox postback

我有一个简单的任务 - 在复选框状态更改时更改页面链接 - 但我是 ASP.NET 的新手并且遇到了一些麻烦。

我可以使用 HtmlControl 和 JavaScript 来做同样的事情:

<script type="text/javascript" language="javascript">
  function checkbox_onChanged(checked) {
    if (checked) {
      document.location = '?type=request_in&show=all';
    }
    else {
      document.location = '?type=request_in&show=unapproved';
    }
  }

  function checkbox_onLoad(checkbox) {
    checkbox.checked = true;
  }
</script>

<form action="" method="get">
<input type="checkbox" name="checkbox"
  onload="checkbox_onLoad(this)"
  onchange="checkbox_onChanged(this.checked)" />Show all
</form>

但我想对用户隐藏它。所以我这样做:
<asp:CheckBox runat="server" ID="check" 
  OnCheckedChanged="check_CheckedChanged"
  AutoPostBack="True" Text="Show all" />

protected void check_CheckedChanged(object sender, EventArgs e)
{
  Response.Redirect(String.Format("{0}?type=request_in&show={1}", Request.Path, 
  checkViewRequestIn.Checked ? "all" : "unapproved"));
}

protected void Page_Load(object sender, EventArgs e)
{
  var show = Request["show"];
  if (!String.IsNullOrEmpty(show) && String.Equals(show, "all"))
  {
    checkViewRequestIn.Checked = true;
  }
}

但似乎加载时检查状态更改再次引发事件,并且复选框始终处于选中状态!

Ans 另一个问题 - 有没有其他方法可以重定向到同一页面而不提供文件名?我的意思是在 JavaScript 中 - 只提供需要的变量?

最佳答案

您可以从 ASP.NET 复选框调用客户端“checkbox_onChanged”,只需从 Page_Load 添加“onchange”,例如:

protected void Page_Load(object sender, EventArgs e)
{
   check.Attributes["onchange"] = "checkbox_onChanged(this.checked)";
}

查看源代码,您将看到 HTML 中发生的事情。

关于.net - ASP.NET CheckBox 状态和 PostBack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931785/

相关文章:

c# - 使用 AAD 应用程序访问 Microsoft Graph

asp.net - EADDRINUSE 地址已被使用

javascript - AngularJS中过滤对象和数组的复选框

javascript - 根据显示值选中或取消选中复选框?

extjs4 CheckboxModel 全选

asp.net - EPPlus ColumnStacked 图表数据点颜色

c# - 在 C# 中将 int 转换为 4 字节的最快方法

asp.net - 类型 "..."不明确 : it could come from assembly "..." or from assembly "...". 请

c# - 处理程序 "ExtensionlessUrlHandler-Integrated-4.0"在其模块列表中有一个坏模块 "ManagedPipelineHandler"

asp.net - 在模板化控件中实现级联 DropDownList 绑定(bind)