【问题标题】:ASP.NET MVC Session Variables not working - remaining as nullASP.NET MVC 会话变量不起作用 - 保持为空
【发布时间】:2016-07-25 03:10:30
【问题描述】:

我正在尝试将“Person”类型的对象存储在会话变量中。 Session 变量的存储方式如下:

    public void SelectPerson(int ID)
    {
        Person person = db.People.Where(p => p.ID == ID).FirstOrDefault();

        Session["PersonID"] = ID;
        Session["Person"] = person;
    }

我稍后会尝试使用这个会话变量,但它总是返回为 null

Person person = (Person) Session["Person"];

我不确定为什么这不起作用。有没有人有任何想法?感谢您的帮助。

【问题讨论】:

  • 取决于 Person 类的实现,可能转换失败,因此返回的数据为空。
  • 您的配置中是否启用了 Session?
  • @Bardo 你能详细说明一下吗?存储 ID 的会话变量是一个测试,即使 ID 有值,会话变量仍然为空。
  • @Paddy 这可能是我认为的问题 - 我不确定这意味着什么或我会怎么做。
  • 1.任何会话都有效吗? 2.如果是,数据库是否返回上面代码中的值?

标签: c# asp.net-mvc session session-variables session-cookies


【解决方案1】:

请检查您从该行得到的值是多少:Person person = db.People.Where(p => p.ID == ID).FirstOrDefault();

试着写:

Response.Write(person);

在你尝试了我在这里写的之后,告诉我它写的值。

【讨论】:

  • 这到底会写到哪里?
  • 而不是response.write,直接运行调试器看看结果如何。
  • @JamesLloyd 他在上面给出了另一个选择。我们只是想看看您从person 获得的价值是多少。您还可以创建一个简单的标签并将其文本设置为person 值。
  • person = {System.Data.Entity.DynamicProxies.Person_A20668C6E1C5A1661A623D9EEC075B8966915E87A24FF6D35AF50E7B07F06A69}
  • 代理创建似乎已启用。尝试在配置中禁用它并尝试var person = Session["Person"]; 以检查是否有任何转换错误。
猜你喜欢
  • 1970-01-01
  • 2015-03-11
  • 2013-04-16
  • 1970-01-01
  • 2012-05-24
  • 2014-12-13
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
相关资源
最近更新 更多