加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何将数据保存在MVC控制器的内存中?

发布时间:2020-12-16 07:24:12 所属栏目:asp.Net 来源:网络整理
导读:请看下面的动作.当用户第一次导航时,创建一个对象,然后当他在页面中导航时,再次访问Action但是通过Ajax请求和数据disapper(worksheets = null). private static ListWorksheet worksheets; public ActionResult DoTest() { if (Request.IsAjaxRequest()) { r
请看下面的动作.当用户第一次导航时,创建一个对象,然后当他在页面中导航时,再次访问Action但是通过Ajax请求和数据disapper(worksheets = null).

private static List<Worksheet> worksheets;
    public ActionResult DoTest()
    {
        if (Request.IsAjaxRequest())
        {
            return PartialView("_Problems",worksheets[1]);
        }

        // first time
        worksheets = new List<Worksheet>()
        {
            new Worksheet("Hoja 1",...),new Worksheet("Hoja 2",...)
        };
        return View(worksheets[0]);
    }

我的第一个解决方案是将变量工作表设置为静态,但我认为这不是一个好习惯.我是在做一个好方法还是有另外一个tweeks?

解决方法

远离静态变量,尤其是在数据依赖于用户的情况下.您可以利用 ASP.NET Session对象.

通过将工作表字段更改为在Session对象中存储其值的属性,可以轻松完成此操作.这样,它将在后续调用中可用.例:

private List<Worksheet> worksheets
  {
    get{ return Session["worksheets"] as List<Worksheet>;}
    set{ Session["worksheets"] = value; }
  }

  public ActionResult DoTest()
  {
      if (Request.IsAjaxRequest())
      {
        return PartialView("_Problems",worksheets[1]);
      }

      // first time
      worksheets = new List<Worksheet>()
      {
          new Worksheet("Hoja 1",...)
      };
      return View(worksheets[0]);
  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读