如何从转发器内的HTML单选按钮获取值?

时间:2011-12-02 03:58:35

标签: asp.net vb.net

我有一个简单的问卷调查系统,可以在我的数据库中向用户显示一定数量的问题。

我有两个独立的表:QuestionsAlternatives(这些是要回答的选项),两个表中的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>

我不知道的是,如果我不知道QuestionIDAlternativeID,因为它是随机生成并使用的,我如何得到用户回答的所有问题HTML input代码?

1 个答案:

答案 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")%>"