MVC 2.0 中的会话状态如何工作?

2024-01-24

我有一个存储各种信息的控制器(即 FormID、QuestionAnswerList 等)。目前我将它们存储在 Controller.Session 中并且工作正常。

我想将一些逻辑分解到一个单独的类(即RulesController)中,我可以在其中执行某些检查等,但是当我尝试引用那里的会话时,它是空的。很明显,会话仅在特定控制器的上下文中保持有效,但是每个人都在做什么呢?

我想这很常见,您想在不同的控制器中共享某些“全局”变量,最佳实践是什么?

这是我的代码的一部分:

在我的 BaseController 类中:

    public List<QuestionAnswer> QuestionAnswers
    {
        get
        {
            if (Session["QuestionAnswers"] == null)
            {
                List<QuestionAnswer> qAnswers = qaRepository.GetQuestionAnswers(CurrentSection, UserSmartFormID);
                Session["QuestionAnswers"] = qAnswers;
                return qAnswers;
            }
            else
            {
                return (List<QuestionAnswer>)Session["QuestionAnswers"];
            }
        }
        set
        {
            Session["QuestionAnswers"] = value;
        }
    }

在我的第一个控制器(派生自 BaseController)中:

QuestionAnswers = qaRepository.GetQuestionAnswers(CurrentSection, UserSmartFormID);

我单步执行代码,上面的语句执行得很好,设置了 Session["QuestionAnswers"],但是当我尝试从下面的另一个控制器获取时,Session["QuestionAnswers"] 为空!

我的第二个控制器(也源自 BaseController):

List<QuestionAnswer> currentList = (List<QuestionAnswer>)QuestionAnswers;

上面的行失败了!看起来 Session 对象本身为空(不仅仅是 Session["QuestionAnswers"])


如果您使用以下命令检索会话,会有什么不同吗

HttpContext.Current.Session("mySpecialSession")  ''# note this is VB, not C#
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC 2.0 中的会话状态如何工作? 的相关文章

  • ASP.NET Core 3.1 / Identity 会话永不过期。如何让它在滑动到期时到期?

    我的网站的安全检查显示会话 即登录 永远不会过期 我已经测试过自己 发现了同样的情况 今天早上我在本地主机上打开了该网站 但我仍然从昨天开始登录 我一直认为它会在 20 分钟后过期 就像在 NET Framework 应用程序中一样 我使用
  • 如何扩展 AuthorizeAttribute 并检查用户的角色

    我正忙着为我的操作方法编写自己的自定义属性 称为 AuthorizeAttribute 我仍然忙着编写代码 这是我的部分代码 AttributeUsage AttributeTargets Method AllowMultiple fals
  • 如何在迭代器内使用 Html.DisplayFor ?

    I am lovingMVC 2 整个事情非常适合网络 然而 有一项功能我无法从Html DisplayFor 功能 lt Page Inherits ViewPage
  • Html.DropDownListFor 未按预期运行 ASP.net MVC

    我是 ASP net MVC 的新手 在使下拉列表正常工作时遇到问题 我有一个强类型视图 它尝试使用 Html DropDownListFor 如下所示 我使用模型中的属性填充列表 如下所示 Public ReadOnly Property
  • 是否应该尝试防范 MVC 视图中的空引用异常/索引越界异常?

    我想发表评论这个问题的 https stackoverflow com questions 1005819 can we unit test view v of mvc接受的答案 现在视图不是已经放弃了后面的代码了吗 那么你要测试什么 指出
  • asp.net mvc 镜像路径和虚拟目录

    我知道这必须是重复的 但我一直在翻阅大量有关此的信息 但无法使其发挥作用 我正在尝试让一个网站在客户端的服务器上运行 并且他们将该网站安装在虚拟目录中 我本地没有这个设置 所以我在这里盲目飞行 我正在尝试建立一条通往图像的路径 用于 Fac
  • ASP.NET MVC 2 - POST 后 ViewData 为空

    我真的不知道在哪里寻找错误 情况 我有一个 ASPX 视图 其中包含一个表单和一些输入 当我单击 提交 按钮时 所有内容都会 POST 到我的一个 ASP NET MVC 操作 当我在那里设置断点时 它被正确命中 当我使用 FireBug
  • 自上一步以来进程或线程已更改

    我正在 Visual Studio 上调试一些代码 此代码属于我创建的自定义会话提供程序 我正在 Web 应用程序启动时对其进行调试 它开始初始化我的提供程序 并且在该函数上我有一个第一次成功命中的断点 但是 同一断点再次被击中 但它有一个
  • 使用 REST API 进行正确的会话管理

    我已经完成了 RESTful API 的设计 其中我使用作为参数发送的 API 令牌对每个请求进行身份验证 现在我想创建一个客户端界面 我想知道什么是管理每个客户端的会话的正确安全方法browser客户 我想过一个流程来保持服务器端无状态
  • 会话对象不更新 ASP.NET

    我在代码的一个时刻设置了一个会话对象 Session my name Dave 稍后在我的代码中 我给用户一个更新此对象的机会 Session my name TextBox1 Text 我重新加载页面并显示一个简短的 hello 语句 如
  • 对 IIS 服务器上托管的 .NET CORE 2.1 应用程序进行一次 AJAX 调用后,会话状态被清除或丢失

    我遇到了这个问题 我已经挠头好几个小时了 问题 我创建的会话状态Login拨打电话后神秘清除或丢失API NET CORE 2 1 中也包含控制器 当我打电话时会发生这种情况API方法看起来像 Authorize Policy AdminV
  • 使用继承的 MVC2 DataAnnotations 验证

    我有一个 NET 2 0 类 其属性被标记为 virtual 我需要在 MVC2 应用程序中使用该类作为模型 因此 我创建了一个继承自 NET 2 0 类的 NET 3 5 类 并将 DataAnnotations 属性添加到新类中的重写属
  • asp.net-mvc 中模型绑定双精度的 CultureInfo 问题(2)

    在我的 Jquery 脚本中 我使用浏览器的 CultureInfo en UK 发布了两个双打 该浏览器使用 作为分数分隔符 我的 MVC 应用程序在区域设置为 nl BE 的服务器上运行 使用 作为分数分隔符 AcceptVerbs H
  • RegularExpressionAttribute - 如何使其客户端验证不区分大小写?

    我有一个用于客户端验证的字符串 private const String regex b d 5 s s d 5 A Z 2 d 3 s s 1 d 3 s 我在我的中使用这个字符串 RegularExpression regex Erro
  • 检测 ASP.NET MVC 上的会话过期

    我构建了一个购物车 它使用会话状态在用户浏览商店时保留购物车数据 我遇到一个问题 如果我在购物车的第 1 步上长时间打开浏览器窗口 然后按 转到第 2 步 我的操作会引发错误 因为第 2 步操作假定会话尚未过期并且ShopCart 对象处于
  • 从 MVC 中的 FormCollection 获取选定的下拉列表值

    我有一个使用 MVC 发布到操作的表单 我想从操作中的 FormCollection 中提取选定的下拉列表项 我该怎么做 我的 HTML 表单
  • ASP.NET MVC - 更新生产中的预编译 Razor View 文件

    我想知道以下是否可能 通过在 Visual Studio 中打开项目设置 使用我们的 MVC 应用程序预编译 Razor 视图 将应用程序部署到生产环境 然后在稍后阶段 通过覆盖生产中现有的 cshtml 文件来更新视图 而无需回收应用程序
  • 向客户报告模型状态和应用程序错误的推荐方法是什么?

    我想知道向浏览器报告将显示给用户的应用程序或模型状态错误的最佳实践是什么 你能抛出一个异常并在jquery post的错误处理程序中处理它吗 例如 考虑这个方法 HandlerErrorWithAjaxFilter HttpPost pub
  • 将 xml 发送到 ASP.NET MVC 操作方法参数

    是否可以将 POX 普通旧 xml 发送到操作中 并让该操作为您执行到对象的模型绑定 我见过使用 JSON 完成此操作 但没有看到任何人使用 xml 完成此操作 考虑做类似的事情 但是使用 JSON 我想你也可以使用动作过滤器属性 http
  • 单选按钮更改事件

    我有 2 个单选按钮 例如 ID 和名称

随机推荐