我正在創建一個擴展WebControl的自定義控件。該網絡控制允許用戶定義的列中標記的集合,是這樣的:在哪裏存儲網絡自定義控制數據
<Custom:CustomGrid>
<Columns>
<Custom:DataColumn HeaderText="FirstName" />
<Custom:DataColumn HeaderText="LastName" />
</Columns>
,並把一個IEnumerable在DataSource屬性,這呈現出的表。 該控件還允許分頁。 DataSource中的IEnumerable是完整列表,我一次顯示列表的一個頁面。我已經將當前頁面,每頁的行數等保存到視圖狀態。我是否也應該在視圖狀態下放置完整列表?也許會話? 這個列表可能會變得有點沉重。也許保存會話中的隨機密鑰,它保存在視圖狀態? 這裏最好的做法是什麼?
編輯:我不認爲這是正確的強加IEnumerable中的所有類型都是可序列化的。這是公平的嗎?那麼我是否需要將數據源複製到其他數據結構進行序列化?
編輯2:即使我使用一個基本控制,而不是實施RenderChildControls我將需要實現的CreateChildControls,但我仍然需要在一些地方仍然存在的數據,還是我錯過了基類的點?
這或多或少是我最終做的。由於數據集不是很大,我只是將每次回發中設置DataSource屬性的責任傳遞給耗用頁面,並且我僅將ViewState存儲到需要將DataSource帶到其先前狀態的內容中。 –