2012-04-28 125 views
0

我有一個頁面,這是一個考試頁面,它選擇所有MCQ問題與他們的答案... 和服務器端頁面加載我添加div.innerHtml + =「html標籤」+問題+無線電包含答案的按鈕,它不斷從數據庫中選擇,直到所有問題都呈現在客戶端,事情是我在窗體中添加所有這些問題和標籤,並在它的最後有一個輸入提交按鈕應提交所有單選按鈕的值,但即使我設置形式的行動我不能得到單選按鈕值...提交表單失敗

下面是一些代碼:

using (SqlDataReader sr1 = command1.ExecuteReader()) 
{ 
    cc.InnerHtml = "<form id=\"form2\" name=\"form2\" method=\"post\" action=\"\">"; 
    while (sr1.Read()) 
    { 
     i++; 
     iString = i.ToString(); 
     questionText = sr1["text"].ToString(); 
     question_first_wrong_answer = sr1["first_wrong_answer"].ToString(); 
     question_second_wrong_answer = sr1["second_wrong_answer"].ToString(); 
     question_right_answer = sr1["right_answer"].ToString(); 
     questionValue = (int)sr1["value"]; 
     c = answerPos.Next(0, 10); 

     cc.InnerHtml += "<span>" + iString + "- " + questionText +"</span>" 
        + "<br />" 
        + "<table style=\"width:77%; margin-left: 47px;\">" 
        + "<tr>" 
        + " <td style=\"width: 210px\">" 
        + " <input type=\"radio\" name=\"question" + iString + "a\" value=\"" + question_first_wrong_answer + "\" />" + question_first_wrong_answer + "</td>" 
        + "<td style=\"width: 210px\">" 
        + "<input type=\"radio\" name=\"question" + iString + "a\" value=\"" + question_second_wrong_answer + "\" />" + question_second_wrong_answer + "</td>" 
        + "<td style=\"width: 210px\">" 
        + "<input type=\"radio\" name=\"question" + iString + "a\" value=\"" + question_right_answer + "\" />" + question_right_answer + "</td>" 
        + "</tr>" 
        + "</table>" 
        + "<br />"; 

    } 
    sr1.Close(); 
    cc.InnerHtml += "<input id=\"Submit1\" type=\"submit\" value=\"Submit\" />" 
       + "</form>"; 
} 
+0

我想如果你顯示結果HTML會很有幫助。 – 2012-04-28 04:12:43

+0

你爲什麼要'動態'構建整個表單。爲什麼不把表單放在ASP.NET(HTML)中,並將問題和答案放在運行時? – 2012-04-28 06:04:29

回答

1

請勿使用InnerHtml。這是不對的。 使用Inbuild HtmlPage

使用這樣實施例

Page.Controls.Add( 
    new LiteralControl(@"<html>\r\n<body>\r\n 
    <h1>Welcome to my Homepage!</h1>\r\n")); 
HtmlForm Form1 = new HtmlForm(); 
Form1.ID = "Form1"; 
Form1.Method = "post"; 
Form1.Controls.Add(
    new LiteralControl("\r\nWhat is your name?\r\n")); 
TextBox TextBox1 = new TextBox(); 
TextBox1.ID = "txtName"; 
Form1.Controls.Add(TextBox1); 
Form1.Controls.Add(
    new LiteralControl("\r\n<br />What is your gender?\r\n")); 
DropDownList DropDownList1 = new DropDownList(); 
DropDownList1.ID = "ddlGender"; 
ListItem ListItem1 = new ListItem(); 
ListItem1.Selected = true; 
ListItem1.Value = "M"; 
ListItem1.Text = "Male"; 
DropDownList1.Items.Add(ListItem1); 
ListItem ListItem2 = new ListItem(); 
ListItem2.Value = "F"; 
ListItem2.Text = "Female"; 
DropDownList1.Items.Add(ListItem2); 
ListItem ListItem3 = new ListItem(); 
ListItem3.Value = "U"; 
ListItem3.Text = "Undecided"; 
DropDownList1.Items.Add(ListItem3); 
Form1.Controls.Add(
    new LiteralControl("\r\n<br /> \r\n")); 
Button Button1 = new Button(); 
Button1.Text = "Submit!"; 
Form1.Controls.Add(Button1); 
Form1.Controls.Add(
    new LiteralControl("\r\n</body>\r\n</html>")); 
Controls.Add(Form1); 
0

卸下服務器形式元件(<form runat="server")。如果存在,則丟棄該新表單。

此外,您對不同的輸入控件使用相同的名稱。

name=\"question" + iString + "a\" value=\"" 

因此,您需要爲收音機擁有唯一的名稱。

+0

我正在閱讀數據庫中的元素,而它讀取它時不斷增加「i」,我將其轉換爲iString,並將其添加到每個「組」單選按鈕,因此每個問題都有3個具有相同名稱但不同值的答案......但這不是問題...當我點擊提交按鈕,它什麼也沒做......所以我想知道如何獲得單選按鈕值? – Booonz 2012-04-28 13:27:21

+0

你有幾種表格?你有巢套嗎? (即形式) – 2012-04-28 15:45:37

+1

沒有...只是1形式,但與他們的單選按鈕很多問題...我可能認爲我應該添加這些控件使用ASP控件,而不是與純HTML – Booonz 2012-04-28 23:23:58