如何在类对象中获取Session值?

时间:2013-05-29 06:31:47

标签: c# asp.net-mvc-3

我为会话分配了一个自定义类的对象,如:

Services Obj = getServiceDetails(3); //getting all data of Service where Id = 3
Session["ServiceObj"] = Obj;

现在我想将它的值赋给同一个类的模型类中的另一个对象。我不知道怎么做。

我试过了,但这不是有效的方式。:

Services oldObj = <Services>Session["ServiceObj"];

请帮助我。我不知道怎么做。

6 个答案:

答案 0 :(得分:7)

正确的类型转换需要圆括号:

Services oldObj = (Services)Session["ServiceObj"];

答案 1 :(得分:2)

你应该使用Services oldObj = (Services)Session["ServiceObj"];

而不是Services oldObj = <Services>Session["ServiceObj"];

答案 2 :(得分:1)

not <Services> use (Services) for casting

答案 3 :(得分:1)

像你一样把它投射到

Services obj = (Services)Session["ServiceObj"];

答案 4 :(得分:1)

您还可以使用通用的方法重构类型化数据检索,例如:使用扩展方法,如下所示:

public static class MyExtensions
{
    public static T GetTypedVal<T>(this HttpSessionState session, string key)
    {
        var value = session[key];
        if (value != null)
        {
            if (value is T)
            {
                return (T)value;
            }
        }
        throw new InvalidOperationException(
                     string.Format("Key {0} is not found in SessionState", key));
    }
}

然后您可以将其用于参考和值类型,如下所示:

    Session["Value"] = 5;
    var valResult = Session.GetTypedVal<int>("Value");

    Session["Object"] = new SomeClass() { Name = "SomeName" };
    var objResult = Session.GetTypedVal<SomeClass>("Object");

答案 5 :(得分:0)

要从会议中获取价值,您应该抛弃它。

Services oldObj = (Service)Session["ServiceObj"];