Frage

Die Arbeit an einem Online-Test.

Ich habe 3 Tabellen

  1. Fragen
  2. Betreff
  3. Thema

Ich habe eine gespeicherte Prozedur hergestellt, die 25 zufällige Datensätze zurückgibt. Ich möchte es im Speicher speichern und dann mit AJAX zu einem Zeitpunkt 1 Frage angezeigt werden soll. Ich will nicht Datenbank 25 Mal getroffen, da es viele Benutzer sind, habe ich versucht und das Ergebnis in Ansichtszustand, aber dann bin ich nicht in der Lage, es zu werfen zurück. wenn ich

Dim qus = from viewstate("questions") 

es funktioniert, aber es funktioniert nicht, wenn ich 1 Datensatz zu einem Zeitpunkt abzurufen.

Code:

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

Ich habe versucht, Gießen, das Objekt zu

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

aber dann bekomme ich diesen Fehler

  

System.Linq.Enumerable + WhereSelectEnumerableIterator`2

Bitte helfen oder wenn es eine andere Methode, es zu tun ist, wenn meine Methode Online-Test zu tun, falsch ist.

Viele Grüße

War es hilfreich?

Lösung

IMO, Sie sind diese Over-Engineering. Warum Schraube versucht, um die Daten im Speicher zu halten? Warum nicht jede Frage zu einem div schreiben, und dann alle der Frage divs verstecken, außer für die „aktuelle Frage“.

Viel einfacher zu implementieren und Sie sind nicht der Server mit mehreren AJAX-Aufrufe schlagen, diese machen auch Zustand (vorher beantwortet Fragen, etc.) Speichern viel, viel einfacher.

Andere Tipps

Haben Sie versucht, nur Session mit Zustand zu halten? Gibt es eine Voraussetzung, dass Sie zu tun, dies verbietet?

Dim qus = CType(Me.Session("questions"), IQueryable(Of PM_SelectRandomQuestionFMResult))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top