首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从动态创建的表单中获取用户输入

如何从动态创建的表单中获取用户输入
EN

Stack Overflow用户
提问于 2011-04-07 20:56:37
回答 3查看 1.5K关注 0票数 1

我正在建立一个ASP.NET网站,允许用户创建和接受测试。考试可以包含各种类型的问题(选择题、真/假、作文等)。由于测试的动态特性,我正在使用中继器创建“采取测试”页面。

我现在的问题是:如何才能得到用户的答案?对于固定数量/类型的问题,这很简单,但我不知道如何从具有动态创建ID的项中获取答案,或者如何将可变数量的答案传回我的数据库。

编辑:我找到了答案这里。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-07 21:36:43

您可以使用Request.Form

但是,下面是使用FindControl和Repeater的另一种方法:

代码语言:javascript
复制
    For Each item As RepeaterItem In Me.RptItems.Items

        Dim value = CType(item.FindControl("TxtName"), TextBox).Text

    Next

您可以将FindControl方法与每个RepeaterItem一起使用,并通过ID在其中找到所需的控制。

ASPX文件:

代码语言:javascript
复制
<asp:Repeater ID="RptItems" runat="server">
    <HeaderTemplate>
        <table>
            <tr>
                <td>
                    Name
                </td>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <asp:TextBox ID="TxtName" runat="server" Text='<%# Eval("Name")%>'></asp:TextBox>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater> 
票数 1
EN

Stack Overflow用户

发布于 2011-04-07 21:01:26

如果您正在使用Asp.Net MVC,您可以参考本文。模型绑定到集合

如果它的webforms,您始终可以访问通过Request.Form集合提交的每个输入。

票数 0
EN

Stack Overflow用户

发布于 2011-04-09 04:20:58

下面是我根据包括这一个在内的链接为每种问题类型所做的工作。

代码语言:javascript
复制
foreach (RepeaterItem item in myRptr.Items)
        {
            if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
            {
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;
                cmd.CommandText = "myPackage.myProcedure";
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.Add("user_id", OracleType.VarChar).Value = Session["UserId"].ToString();
                cmd.Parameters.Add("question_id", OracleType.Number).Value = ((HiddenField)item.FindControl("myHidden")).Value;
                cmd.Parameters.Add("answer", OracleType.VarChar).Value = ((TextBox)item.FindControl("myTxt")).Text;
                cmd.ExecuteNonQuery();
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5587550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档