0

オンラインテストに取り組んでいます。

私は3つのテーブルを持っています

  1. 質問
  2. 主題
  3. トピック

25 個のランダム レコードを返すストアド プロシージャを作成しました。メモリ内に保存してから、AJAX で一度に 1 つの質問を表示したいと考えています。ユーザーが多いため、データベースに25回アクセスしたくありません。結果をviewstateに保存しようとしましたが、キャストバックできません。私が使用する場合

Dim qus = from viewstate("questions") 

動作しますが、一度に 1 つのレコードを取得すると動作しません。

コード:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        ViewState.Add("QuestionNo", 0)
        Dim qus = From q In PML.PM_SelectRandomQuestionFM Select q
        viewstate.add("questions",qus)
        LoadQuestion(0)
    End If
End Sub



Private Sub LoadQuestion(ByVal i As Integer)
    Dim QuestionNo As Integer = CType(ViewState("QuestionNo"), Integer) + 1

    Try
        If QuestionNo <= 25 Then

            Dim qus = viewstate("questions")

            Me._subjectTopic.Text = String.Format("<b>Subject:</b> {0} -- <b>Topic:</b> {1}", qus(i).subjectName, qus(i).TopicName)
            Me._question.Text = " " & qus(i).Question
            Me._answer1.Text = " " & qus(i).Answer1
            Me._answer2.Text = " " & qus(i).Answer2
            Me._answer3.Text = " " & qus(i).Answer3
            Me._answer4.Text = " " & qus(i).Answer4
            Me._questionNo.Text = String.Format("Question No. {0} / 25", QuestionNo)
            ViewState.Add("QuestionNo", QuestionNo)
        Else
            Server.Transfer("freeMemberResult.aspx")
        End If

    Catch ex As Exception
        Throw New System.Exception(ex.ToString)
    End Try
End Sub

オブジェクトをキャストしてみました

Dim qus = CType(ViewState("questions"), IQueryable(Of PM_SelectRandomQuestionFMResult)) 

しかし、その後、このエラーが発生します

System.Linq.Enumerable+WhereSelectEnumerableIterator`2

私のオンライン テストの方法が間違っている場合は、助けてください。または、他の方法があれば教えてください。

よろしく

4

2 に答える 2

0

セッションを使用して状態を維持しようとしましたか?これを禁止する要件はありますか?

Dim qus = CType(Me.Session("questions"), IQueryable(Of PM_SelectRandomQuestionFMResult))
于 2009-09-12T12:44:11.077 に答える
0

IMO、あなたはこれを過剰に設計しています。データをメモリに保持しようとするのはなぜですか?各質問を div に書き込んでから、「現在の質問」を除くすべての質問 div を非表示にしてみませんか。

実装がはるかに簡単で、複数の AJAX 呼び出しでサーバーにアクセスする必要がありません。これにより、状態 (以前に回答した質問など) の保存もはるかに簡単になります。

于 2009-09-12T13:20:02.093 に答える