【问题标题】:How to get all checkbox values by one specified name at asp.net server-side?如何在 asp.net 服务器端按一个指定名称获取所有复选框值?
【发布时间】:2012-03-16 22:15:53
【问题描述】:

无论复选框是否被选中,如何从 JavaScript 添加的复选框中获取值?

这些复选框由 JavaScript 客户端创建,它们的值将代表一些将保存到数据库中的数据。这就是为什么我需要在服务器端处理它们。

【问题讨论】:

  • 它们是 CheckBoxList 吗?如果不是,它们是否包含在另一个控件中?您不必通过 URL 传递值...
  • @IrishChieftain 至少我需要获取复选框 id 来检查 Checked 属性...这与如何获取它们的值相同...
  • 没有 JS 专家,但在 4.0 中有一个页面属性,可让您在不附加任何内容的情况下获取客户端 ID 服务器端。
  • @IrishChieftain 看起来 Page.Controls 可以返回所有控件...尚未完成所有细节...将看到...谢谢

标签: javascript asp.net checkbox


【解决方案1】:

您需要确保这些复选框在使用 Javascript 在客户端创建时分配了名称属性,以便在请求中提交。

例如:

<input type="checkbox" id="mycheck" name="mycheck" />

提交表单后,您可以通过查看请求参数来访问复选框,如下所示:

//will probably say "on" or "checked", not sure.
string mycheckbox= HttpContext.Current.Request.Params["mycheck"];

请注意,您只会在请求参数中看到被选中的复选框。如果你创建了 5 个复选框并且只有一个被选中,那么只有一个被选中的才会出现在 Params 集合中

【讨论】:

  • ...我的问题是获取所有复选框值...不仅仅是那些被选中的值
  • 我以为我已经很清楚了...你不会得到所有的复选框,你只会得到那些被选中的复选框。这是合乎逻辑的,因为仅仅因为页面上有 1000 个控件就提交具有 1000 个参数的请求是没有意义的。但是找到一个解决方法是微不足道的:将您迄今为止创建的复选框总数放入一个隐藏字段并按顺序命名它们。如果隐藏字段的值为 20,而您只进入 params 集合复选框5,则可以假设所有其他 19 个框都没有被选中。
  • @shrimprice 如果您一点点努力思考这个问题,有很多方法可以解决这个问题。
  • @shrimprice 您不能循环访问 Page.Controls,因为它们不会在那里;正如您所解释的,它们是使用 Javascript 在客户端创建的。 Page.Controls 将只保存服务器端控件(那些用runat="server" 声明的控件)。同样,有很多方法可以解决这个问题,我提出了一种可以解决您的问题的方法。这不是唯一的方法,而是一种方法。你的英语不是问题,你的和我的一样好
  • @IrishChieftain 因为这些复选框是在客户端使用 Javascript 创建的。在后面的代码中不会有 Checkbox 对象的实例,因此您可以说 mycheckBox.Checked。你的代码甚至不会编译。唯一的方法是访问 Request.Params 对象。
猜你喜欢
  • 2018-03-29
  • 2012-12-16
  • 2017-01-24
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 2013-06-16
相关资源
最近更新 更多