سؤال

تعمل على اختبار على الانترنت.

عندي 3 جداول

  1. الأسئلة
  2. الموضوع
  3. الموضوع

لقد جعلت من الإجراء المخزن والتي ترجع 25 عشوائية السجلات.أريد أن تخزينه في الذاكرة ومن ثم عرض 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)) 

ولكن إذا كنت تحصل على هذا الخطأ

النظام.Linq.Enumerable+WhereSelectEnumerableIterator`2

الرجاء المساعدة أو إذا كان هناك أي طريقة أخرى للقيام بذلك ، إذا كان لي طريقة القيام على الانترنت اختبار خاطئ.

تحياتي

هل كانت مفيدة؟

المحلول

المنظمة البحرية الدولية ، أنت على هندسة هذا.لماذا العبث محاولة لعقد البيانات في الذاكرة ؟ لماذا لا يكتب كل سؤال إلى شعبة ، ثم إخفاء كل مسألة divs باستثناء "السؤال الحالي".

أسهل بكثير لتنفيذ وكنت غير ضرب الخادم مع العديد من المكالمات اياكس, هذا أيضا جعل توفير الدولة (سابقا الأسئلة ، الخ) أسهل بكثير.

نصائح أخرى

هل حاولت فقط باستخدام الدورة للحفاظ على الدولة ؟ هل هناك شرط يمنع من هذا ؟

Dim qus = CType(Me.Session("questions"), IQueryable(Of PM_SelectRandomQuestionFMResult))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top