1

ユーザーがテストを作成して実行できる ASP.NET Web サイトを構築しています。テストには、さまざまな種類の問題 (多肢選択式、正誤問題、エッセイなど) を含めることができます。テストの動的な性質のため、リピーターを含む「テストを受ける」ページを作成しています。

私の問題は次のとおりです。ユーザーの回答を取得するにはどうすればよいですか? 質問の数/タイプが固定されている場合、これは簡単ですが、動的に作成された ID を持つアイテムから回答を取得する方法や、可変数の回答をデータベースに返す方法がわかりません。

編集:ここで 答えを見つけました。

4

3 に答える 3

1

Request.Form を使用できます

ただし、FindControl と Repeater を使用した別のアプローチを次に示します。

    For Each item As RepeaterItem In Me.RptItems.Items

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

    Next

各 RepeaterItem で FindControl メソッドを使用し、ID で目的のコントロールを見つけることができます。

ASPX ファイル:

<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> 
于 2011-04-07T21:36:43.587 に答える
0

これを含むリンクに基づいて、質問の種類ごとに私がやったことは次のとおりです。

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();
            }
        }
于 2011-04-09T04:20:58.553 に答える
0

Asp.Net MVC を使用している場合は、この記事を参照できます。モデルをコレクションにバインド

その Web フォームの場合、Request.Form コレクションを介して送信された各入力にいつでもアクセスできます。

于 2011-04-07T21:01:26.530 に答える