Online-Test mit ASP.NET / Linq
Frage
Die Arbeit an einem Online-Test.
Ich habe 3 Tabellen
- Fragen
- Betreff
- 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
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))