提交表单失败

问题描述:

我有一个页面,这是一个考试页面,它选择所有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

请勿使用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); 

卸下服务器形式元件(<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