【问题标题】:How to avoid using Session如何避免使用 Session
【发布时间】:2014-01-31 09:25:31
【问题描述】:

我有一个包含数据网格的接口。当我将元素添加到数据网格时,我还将它添加到列表属性中,该属性是我的数据网格的数据源。这里在代码隐藏中声明我的列表:

Public Property listeSpecialite() As List(Of RECSPECIALITECONCOURS)
    Get
        Return Session("specialite")
    End Get
    Set(ByVal value As List(Of RECSPECIALITECONCOURS))
        Session("specialite") = value
    End Set
End Property

这是我将元素添加到数据网格时的代码:

 Protected Sub gridsecialite_ItemCommand(source As Object, e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles gridsecialite.ItemCommand
    If e.CommandName = "Insert" Then
        Dim dropSpecialite As DropDownList = CType(e.Item.FindControl("txtSpecialite_Footer"), DropDownList)

        Dim specialite As New RECSPECIALITECONCOURS
        specialite.CODESPECIALITE = IGS.ChercherParIdInt(Of GENSPECIALITE)(CInt(dropSpecialite.SelectedValue))
        listeSpecialite.Add(specialite)
        gridsecialite.DataSource = listeSpecialite            
        gridsecialite.DataBind()            

    End If
 End Sub

在用户单击保存时,我将列表中的所有元素保存到数据库中。

如何在不使用会话的情况下保存列表元素。 (我的老板说在会话性能原因中存储元素列表不好)

【问题讨论】:

    标签: asp.net vb.net session


    【解决方案1】:

    您可以使用ViewState 来存储listeSpecialite。只需确保了解它的工作原理,以确保满足您的需求。

    Viewstate 有其自身的缺点。序列化/反序列化、B64 中的编码/解码以及页面生命周期中加载/恢复页面视图状态等的更多处理时间。此外,默认情况下,视图状态在隐藏字段中发送到客户端。这会增加带宽。

    无论如何,如果您的列表不必保留在当前视图之外,我会使用Viewstate

    编辑:

    包含 1000 个项目的列表视图状态将是巨大的。如何从数据库中读取持久项目并将添加的项目保留在视图状态中?您可以检索数据库项目,从视图状态检索项目,组合并绑定到数据网格。这是另一种避免 session 和 hurge viewstate 的策略,代价是每次回发都读取数据库。

    正如我所说,没有灵丹妙药...... :-P

    【讨论】:

    • 是的 jlvaquero 先生,这也是一种替代方案,但是您是否注意到当我们处理 bi 数据列表(列表中超过 1000 个元素)时会对性能产生影响,因为我认为服务器和客户端在回发时交换元素?
    • 是的。我对此很清楚。在我自己的帖子中,我写道:“此外,默认情况下,视图状态会在隐藏字段中发送给客户端。这会增加带宽。”您可以在服务器中尝试 gzip http 响应以最小化带宽,也可以在服务器端存储视图状态。关键是没有灵丹妙药。选择一种方法并处理缺点以尽量减少它们。
    • 是的,谢谢 jlvaquero 先生,我认为这是一个不错的选择,我会更多地寻找其他选择,然后我会使用最好的!
    猜你喜欢
    • 2011-11-02
    • 2017-07-09
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多