【问题标题】:ASP.NET MVC SessionASP.NET MVC 会话
【发布时间】:2011-05-15 16:43:32
【问题描述】:

这是不好的做法吗?

using System.Web.Mvc;

namespace WebInventaris.Utils.Session
{
    public static class SessionControllerExtensions
    {
        public static void SetSessionVar<T>(this Controller controller, string field, T value)
        {
            controller.Session[field] = value;
        }

        public static T GetSessionVar<T>(this Controller controller, string field)
        {
            return (T) controller.Session[field];
        }
    }
}

我正在尝试将 Session 与我的控制器分开,但我对这些方法的感觉并不好。

【问题讨论】:

    标签: extension-methods session-state asp.net-mvc-3


    【解决方案1】:

    直接从控制器中使用会话没有任何问题(这也是它被公开为 Controller 类的属性的原因之一)。而且我看不到替换的好处:

    Session["foo"] = "bar";
    

    调用扩展方法:

    this.SetSessionVar("foo", "bar");
    

    可能更有趣的是您的通用 getter,但它仍然不是类型安全的,因为您在此方法中进行强制转换,这也可以在控制器操作中完成。所以总而言之,我不会说这是一个不好的做法,但我没有看到这样一个类的任何好处,而且它还使您的代码对其他需要了解这是一个扩展方法和背后的开发人员的可读性降低它只是使用会话的场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-24
      • 2015-01-14
      • 2015-03-13
      • 2011-08-12
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多