c# - 在 ASP.Net 中包装 session 状态的首选方法是什么?

标签 c# asp.net session-state

我有一个使用 session 状态的 ASP.Net 项目,我想对我们如何访问 session 状态更严格一点,我对代码周围 float 的所有字符串不满意。我还需要知道何时在 session 状态中存储/更新特定值以跟踪该对象的最新值。

字符串问题使用常量很容易解决,但对跟踪没有帮助。将它们全部封装在一个类中很吸引人,但是我必须将 session 对象传递给那个类,这看起来有点乱

我正在考虑使用以下两个选项之一:

  1. session 对象上的扩展 getter 和 setter
  2. session 对象的扩展方法,用于返回带有 getter 和 setter 的类

第一个给了我语法:

var thing = Session.GetThing();
Session.SetThing(thing);

第二个给出:

var thing = Session.Wrapper().Thing;
Session.Wrapper().Thing = thing;

两者都有其吸引力,但我倾向于第二种。在理想的世界中,我希望能够做到这一点:

var thing = Session.Thing(); // easy to do
Session.Thing() = thing; // don't think it's possible

处理此问题的首选方法是什么?这些中的任何一个,换一种方式,还是我只是做错了?

最佳答案

您不必将 Session 传递给每个类(class),您可以:

public class State
{
    public string Something
    {
        get { return HttpContext.Current.Session["Something"] as string; }
        set { HttpContext.Current.Session["Something"] = value; }
    }
}

我相信这是典型的方法。 HttpContext具有静态可用的 Current 属性。

关于c# - 在 ASP.Net 中包装 session 状态的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481473/

相关文章:

c# - 从文本文件加载数据然后将其存储到数据库的最快方法

c# - 如何设置 UWP 元素的状态?

c# - 报告服务实例的 WMI 查询返回所有实例,而不考虑父 sql server 路径

c# - TFS 构建 CopyDirectory 错误不停止构建

c# - ASP.NET - App_Code - 在同一文件夹中混合 VB 和 C#

c# - Session.Clear() 与 Session.RemoveAll()

c# - 将 Base64 编码的 CSS 图片上传到 Asp.Net MVC/Web Api

jquery - 在.Net MVC 5的同一页面中创建 "One to many"的 View

c# - 在 session 中缓存搜索结果与保持大对象堆清洁

c# - 表单提交后处理刷新