编程语言
首页 > 编程语言> > C#-ASP.NET服务器端视图状态

C#-ASP.NET服务器端视图状态

作者:互联网

我已经阅读了一些在服务器上存储viewstate的方法:

Here is one

Here is another

但是它们有点复杂.我正在寻找一种无需序列化即可持久化对象的方法.我可以使用会话状态,但是如果用户打开多个窗口,则可能会覆盖该对象.

有一个简单的解决方案吗?

解决方法:

在这种情况下,我将使用唯一键将对象存储在会话中,并将键绑定到页面.所有这些都可以抽象到页面类的属性中.

public string PersistanceKey
{
    get { 
        if(ViewState["PersistanceKey"] == null)
           ViewState["PersistanceKey"] = "Object" + Guid.NewGuid().ToString();

        return (string)ViewState["PersistanceKey"];
    }
}

public PersistanceObject Persistance
{
    get {
        if(Session[this.PersistanceKey] == null)
            Session[this.PersistanceKey] = new PersistanceObject();

        return (PersistanceObject)Session[this.PersistanceKey];
}

不同的会话密钥将允许每页不同的对象.或者,可以考虑使用应用程序缓存(Cache对象)自动从内存中删除陈旧的条目,而不是使用Session对象,但这有其自身的警告.

应当指出,乔尔在回答有关内存使用情况时的警告是完全准确的.对于低内存,高使用率或大持久性对象方案,这可能不是最好的主意.

标签:session-state,viewstate,asp-net,session,c
来源: https://codeday.me/bug/20191024/1921388.html