0

我正在尝试创建一个投票系统,该系统将询问用户他们想从下拉列表中添加的选项数量。

然后,当用户选择一个数字时,我想为这些数字添加文本框,最后使用 asp.net 遍历文本框并将它们的值添加到数据库中。

例子:

  1. 用户选择添加 5 个选项。
  2. 我使用 Jquery 将 5 个输入附加到表单中。
  3. 用户添加他们的值。
  4. 我遍历文本框并根据这些值执行 void。

我能够完成前 3 步,但我被困在第 4 步。为了解决它,我尝试使用循环:

foreach (TextBox tb in form1.Controls) 
{
   Response.Write(tb.Text);
}

但这会引发错误:

无法将“System.Web.UI.LiteralControl”类型的对象转换为“System.Web.UI.WebControls.TextBox”类型。

我如何迭代抛出文本框?

谢谢

4

2 回答 2

2

任何静态内容都由 LiteralControl 表示,这就是您体验它的原因。一个真正简单的方法是使用 LINQ:

var ctls = form1.Controls.OfType<TextBox>();
foreach (var ctl in ctls) { .. )

或者在循环遍历控件时检查类型以确保它首先是文本框:

foreach (Control tb in form1.Controls) 
{
   if (tb is TextBox)
      Response.Write(((TextBox)tb).Text);
}
于 2013-01-21T19:30:12.837 回答
0

布赖恩的回答似乎很可靠。第一眼想到的另一个选择是:

  • 声明一个函数...
  • 在js中声明一个简单的数组甚至是一个字符串
  • 从客户端迭代您的输入
  • 对于每次迭代,您应该将值保存在该数组中或连接该值。

然后可以将数组保存为某个 asp 隐藏字段中的字符串,以便执行服务器端操作。

最好的祝福。

于 2013-01-21T19:37:12.933 回答