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 に答える