C#-ASP.NET服务器端视图状态
作者:互联网
我已经阅读了一些在服务器上存储viewstate的方法:
但是它们有点复杂.我正在寻找一种无需序列化即可持久化对象的方法.我可以使用会话状态,但是如果用户打开多个窗口,则可能会覆盖该对象.
有一个简单的解决方案吗?
解决方法:
在这种情况下,我将使用唯一键将对象存储在会话中,并将键绑定到页面.所有这些都可以抽象到页面类的属性中.
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