2013-01-14 29 views
0

我已經創建了一個可以包含一個對象的多個實例的類,所有的數據都存儲在會話中。直到運行時,我都不知道有多少實例。顯示這種動態數據的最佳方法是什麼?我使用代碼背後的aspx,所以我認爲它需要發生在負載子。如何根據通用對象顯示動態HTML

萬一有幫助,繼承人的類,它在VB,但在C#中的答案是罰款:

Imports System.Web.HttpContext 

Public Class Student 

    Public Property SchoolId As Integer 
    Public Property Grade As Integer 
    Public Property StudentName As String 


    Public Sub AttachToSession(StudentToBeAdded As Student) 

     Dim StudentList As New List(Of Student) 

     If (Current.Session("student") Is Nothing) Then 

      StudentList.Add(StudentToBeAdded) 
      Current.Session("student") = StudentList 

     Else 

      StudentList = Current.Session("student") 
      StudentList.Add(StudentToBeAdded) 
      Current.Session("student") = StudentList 

     End If 

    End Sub 

End Class 
+0

這個問題是非常含糊。你有更具體的問題嗎?也許你可以展示你嘗試過的東西,或者你在找什麼結果? – JDB

+0

對不起,我不需要實際的html,只是一種顯示動態數據的方式。就像我通常會在服務器上使用標籤或文本框和runat一樣,但這些控件不映射到我的數據結構。我正在考慮2種可能的方式 - 包含一個html字符串或某種自定義控件的標籤。我不太在.net中前進,所以我不太確定 – jriggs

+0

這將有助於您的問題的信息。你應該考慮編輯它。 – JDB

回答

0

或者,如果你想有一個自定義的外觀和感覺,你可以嘗試這樣的事情(在你的aspx頁面):

<% For Each l_student As Student In CType(Session("student"), List(Of Student)) %> 
    <div> 
     <p>Name: <%= l_student.StudentName %></p> 
     <p>Grade: <%= l_student.Grade %></p> 
    </div> 
<% Next %> 

這會爲你的學生集合中的每個項目創建一個「格」元素。

參見:Introduction to ASP.NET inline expressions in the .NET Framework

你可能會更好創造您的學生班級共享屬性,但:

Public Shared ReadOnly Property Students As List(Of Student) 
    Get 
     Dim l_studentList As List(Of Student) = TryCast(Current.Session("student"), List(Of Student)) 
     If l_studentList Is Nothing Then 
      l_studentList = New List(Of Student) 
      Current.Session("student") = l_studentList 
     End If 

     Return l_studentList 
    End Get 
End Property 

那麼你的aspx是:

<% For Each l_student As Student In Student.Students %> 
... 
1

可以使用GridView控件來顯示學生信息

標記

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True"> 
</asp:GridView> 

在您的代碼

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 

    If Not IsPostBack Then 
     GridView1.DataSource = CType(Session("student"), List(Of Student)) 
     GridView1.DataBind() 
    End If 

End Sub 
+0

感謝您的快速響應。另一個答案更接近我試圖完成的事情 – jriggs