문제

온라인 테스트 작업.

나는 3 개의 테이블이 있습니다

  1. 질문
  2. 주제
  3. 주제

25 개의 임의 기록을 반환하는 저장된 절차를 수행했습니다. 메모리에 저장 한 다음 Ajax와 함께 한 번에 하나의 질문을 표시하고 싶습니다. 많은 사용자가 있기 때문에 데이터베이스를 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

온라인 테스트를 수행하는 방법이 잘못된 경우 도와 주거나 다른 방법이 있으면 도움을주십시오.

문안 인사

도움이 되었습니까?

해결책

IMO, 당신은 이것을 과도하게 공학하고 있습니다. 왜 데이터를 메모리에 고정 시키려고 노력하는 이유는 무엇입니까? 각 질문을 div에 작성한 다음 "현재 질문"을 제외한 모든 질문 DIV를 숨기지 않겠습니까?

구현하기가 훨씬 쉽고 여러 Ajax 호출로 서버에 도달하지 않으므로 저축 상태 (이전에 답변 한 질문 등)가 훨씬 쉽게 만들어집니다.

다른 팁

상태를 유지하기 위해 세션을 사용해 보셨습니까? 이 작업을 수행하는 것을 금지하는 요구 사항이 있습니까?

Dim qus = CType(Me.Session("questions"), IQueryable(Of PM_SelectRandomQuestionFMResult))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top