2016-07-26 8 views
0

おはよう、ページにhtml要素を動的に追加してasp.netにアクセスするにはどうすればよいですか?

私は、ビジュアルスタジオを使用して要素を動的に追加し、それらの値にアクセスする方法を見つけようとしています。私は全体を複雑にしている、私はばかげている、または私が何をやろうとしているかを真に行う方法はない。 次の100個以上のHTMLアイテムセットを生成する必要があるページを作成しようとしています。 基本的に多肢選択テストを作成するための質問と回答のフォームです。質問を入力する領域があり、複数の選択肢に追加するだけの追加のテキストボックスがあります。解答エリアに余分な2つのテキストボックスを追加することができ、ボタンもあります(それらが作成し、テーブルの行のdiv要素に追加または非表示し、ボタンが押されたときに明らかにされているかどうかは。)


[質問のテキストボックス]

[テキストボックス] [テキストボックス] [テキストボックス] [テキストボックス] [この行(最大でのみエクストラ2)]

は、[テキストを提出するボタンを確認するために、追加のテキストボックスを追加ボタンテキストボックス]


[上記の要素の別のコピーを追加するボタン(最大100)]

普通のフォームを作成するのが大好きですが、これはウェブ上で動作する必要があります。私はこのコンテンツのすべてを追跡することは悪夢になる可能性があることを知っていますが、私は代替案を考えることができません(私は代替案を考えましたが、もっと複雑に思えます)。私は次のように試しました: divをテーブルセルに追加してテキストボックスを追加しようとしましたが、後でdivにアクセスできませんでした。これを行う方法はありますか? innerHtmlメソッドを使用して作成した要素にアクセスできる場合、多かれ少なかれ、オンラインでは何も見つかりません。

QuestionContent.InnerHtml += "<table runat=\"server\" style=\"width: 100 %; \"><tr><td> Question " + _QuestionNum + " </td></tr><tr><td class=\"auto - style1\"><div id=\"divQ"+_QuestioNum+"\"></div></td></tr></table>"; 
//Might have an issue adding an element with runat=server, but this was the only way I could think of extracting a value that is created dynamically in C#. 
        ((System.Web.UI.HtmlControls.HtmlGenericControl)mainPanel.FindControl("divQ1")).InnerHtml = "<asp:TextBox ID=\"txtChoice1\" runat=\"server\">Choice1</asp:TextBox>"; 
    //Here I try to access the div created above. Unrelated: Also tried with a normal textbox, but I realise that creating an asp textbox here might cause issues. 

私はC#で作成したものにアクセスできないようです。より良い方法がありますか?このアイデアをあきらめて、javascriptを使って要素を作成しようとしました。私はまだ私はJavaScriptを使用してC#に値を渡すことができるかどうかを調べる必要がありますが、私は今別の問題で立ち往生しています。以下のコードが実行されるたびに要素が表示されますが、すぐに表示されなくなります。これはasp.netの問題ですか? Googleの結果はそれほど役に立ちませんでした。

function addQuestion() { 
if (numQuestions == limit) { 
    alert('Maximum question limit reached. Consider breaking this test up into multiple tests.'); 
} 
else { 
    var newdiv = document.createElement('div'); 
    newdiv.setAttribute('id', 'divQ' + numQuestions); 
    newdiv.innerHTML = '<table><tr><td> Question' + numQuestions + '</td></tr><tr><td>'; 
    for(var i=0;i<6;i++){ 
     newdiv.innerHTML += "<input type=\"text\" name=\"textBox"+i+"\">"; 
    } 
    newdiv.innerHTML += '</td></tr></table>'; 
    numQuestions++; 
    document.getElementById('divQuestionContent').appendChild(newdiv);  
} 

}

しかし、私は私ができる場合はJavaScriptを使用しないようにしたいと思います。このページを作成するより良い方法はありますか?私は単に何か間違ったことをしましたか?どんな助けでも大歓迎です。

+0

あなた –

+0

のための動的なコンテンツ:これは、このような何かを行うことができます。 – Phill

+0

私は間違いなくWeb dev haha​​でいくつかの本を拾う必要があります。 –

答えて

1

私は、サーバーとクライアント側のコードが混在していると思います。

第一)はあなたの最初の知られnecesaryフィールド

第二) Javascriptの一部でHTMLフォームを作成します。ユーザーがフォームにフィールドを追加し、この答えを確認してください(Javascriptを、クライアント側で実行する必要があります): How add new hidden input fields to the form on submit

第三) C#の部分を。フォームリクエストでは、どれくらいの数がわからないので、すべてのrequest.formアイテムをループする必要があります。私はあなたがWeb開発にいくつかの本を拾った場合、それが良いだろうと考えてJavaScriptで

StringBuilder s = new StringBuilder(); 
foreach (string key in Request.Form.Keys) 
{ 
    s.AppendLine(key + ": " + Request.Form[key]); 
} 
string formData = s.ToString(); 
+0

ありがとう!確かめます。 –

関連する問題