2011-03-12 27 views
0

我們希望在執行請求並且用戶回到過濾器頁面時,「複製」複雜的過濾器ui。修改在控件之前發佈數據ASP.NET中的LoadPostData()

由於過濾器是非常複雜的,動態的,我們不希望通過所有項目走,並記住所選擇的值,然後從代碼應用保存的值 - POST數據包含了所有選擇的選項反正...

所以我們的目標是攔截一個!IsPostBack請求,檢查我們是否有一個保存的過濾器,注入已保存的發佈數據到請求中,然後繼續,讓所有ASP.NET控件完成它們的工作,就好像它是回傳。

我們試過到目前爲止:

  • Server.Transver保存形式是一個不錯的主意,但的Request.Form是隻讀的總彙。
  • 使用自定義發佈數據創建一個新的HttpWebRequest到同一頁面似乎阻止了IIS工作進程。
  • 不確定IHTTPHandler是否可以修改發佈數據,或者已經太晚了?

任何想法?這將是非常酷,非常靈活重播任何類型的請求......

回答

0

我們結束了在記憶屆選定的值,然後在頁面重新加載這樣的應用:

定義

Private Property SavedFilter() As Dictionary(Of String, Object) 
      Get 
       If Session("savedFilter") Is Nothing Then 
        Session("savedFilter") = New Dictionary(Of String, Object)() 
       End If 

       Return CType(Session("savedFilter"), Dictionary(Of String, Object)) 
      End Get 
      Set(ByVal value As Dictionary(Of String, Object)) 
       Session("savedFilter") = value 
      End Set 
     End Property 

保存

SavedFilter.Clear() 
SavedFilter.Add(txtReactor.ID, txtReactor.Text) 
SavedFilter.Add(AllCountriesCheckBox.ID, AllCountriesCheckBox.Checked) [...] 

申請

txtReactor.Text = SavedFilter(txtReactor.ID) 
AllCountriesCheckBox.Checked = SavedFilter(AllCountriesCheckBox.ID) [...] 
相關問題