我有一个简单的问卷调查系统,可以在我的数据库中向用户显示一定数量的问题。
我有两个独立的表:Questions
和Alternatives
(这些是要回答的选项),两个表中的QuestionID
字段相关。我使用嵌套中继器( parentRepeater 表示问题, childRepeater 表示选项)来呈现此类问卷,并在页面上正确显示。
每个选项都是一个单选按钮,我不得不将其用作HTML而不是标准服务器控件 <asp:RadioButton>
,因为转发器中存在动态ID问题。
所以我的.aspx
代码是这样的:
<asp:Repeater ID="rptQuestoes" runat="server">
<HeaderTemplate>
<form method="get">
<ol class="orderedList">
</HeaderTemplate>
<ItemTemplate>
<li>
<%#DataBinder.Eval(Container.DataItem, "QuestionName")%>
<asp:Repeater ID="rptAlternativas" DataSource='<%# Container.DataItem.Row.GetChildRows("Questionario") %>' runat="server">
<HeaderTemplate>
<ul style="list-style-type: none">
</HeaderTemplate>
<ItemTemplate>
<li>
<input id="<%#Container.DataItem("AlternativeID")%>" type="radio" runat="server" name="<%#Container.DataItem("QuestionID")%>" value="<%#Container.DataItem("AlternativeID")%>" /><%#Container.DataItem("AlternativeName")%>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
<FooterTemplate>
</ol>
</form>
</FooterTemplate>
</asp:Repeater>
我不知道的是,如果我不知道QuestionID
和AlternativeID
,因为它是随机生成并使用的,我如何得到用户回答的所有问题HTML input
代码?
答案 0 :(得分:2)
您需要从Request.Form["nameoftheRadioButtonYouWant"];
我不知道你的中继器会发生什么,但是有了这种结构:
<input type="radio" value="someRadio" name="A" />
<input type="radio" value="hello" name="A" />
<input type="radio" value="world" name="A" />
检查中间无线电为此代码生成“Hello”:
string aVal = Request.Form["A"];
所以从您的代码看起来,您将循环遍历所有问题,并找到用户从中选择的答案
string answer = Request.Form[QuesId.ToString()]; //don't forget the ToString()!
因为你给单选按钮提供了问题的名称
<input ... type="radio" name="<%#Container.DataItem("QuestionID")%>"