我们希望在请求被执行后“重播”复杂的过滤器ui并且用户返回过滤器页面。
由于过滤器非常复杂和动态,我们不想遍历所有项目并记住所选值,然后应用代码中保存的值 - 帖子数据包含所有选定的选项...
所以我们的目标是拦截一个!IsPostBack请求,检查我们是否有一个已保存的场景过滤器,将保存的帖子数据注入到请求中,然后继续让所有ASP.NET控件完成它们的工作,就像它一样是一个回发。
到目前为止我们尝试了什么:
有什么想法吗?这对于重播任何类型的请求都非常酷且非常灵活......
答案 0 :(得分:0)
我们最终记住Session中的选定值,然后在重新加载页面时应用:
定义
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) [...]