【问题标题】:controller member控制器成员
【发布时间】:2009-11-19 04:09:54
【问题描述】:

在我的 mvc 应用程序中,我有一个控制器,其中包含许多操作。

我有一个控制器类的属性。

在索引控制器中,我正在设置属性的值,

它能否在另一个动作中获得相同的值..

public class HomeController : BaseController
    {
int sample =0;

public ActionResult Index(int query)
        {
        this.sample = test;
        }

        public ActionResult Result()
        {
        this.sample  -------- can this 'll give the value of wat i get in index action.

    }

}

【问题讨论】:

    标签: asp.net-mvc model-view-controller


    【解决方案1】:

    由于控制器将随着每个 Web 请求而创建和销毁,因此您不能将数据存储在跨 Web 请求的私有变量中,这是一件好事,因为不同的用户会发出不同的请求,因此您需要使用缓存.

    试试这个:

      public class HomeController : BaseController
      {
    
          public ActionResult Index(int query)
          {
              ControllerContext.HttpContext.Session["query"] = query;
          }
    
          public ActionResult Result()
          {
              int query = (int)ControllerContext.HttpContext.Session["query"];
          }
      }
    

    【讨论】:

    • 我使用过临时数据,它对所有用户都通用还是对于单个连接,单独的临时数据会在那里..?
    • TempData 数据字典可用于单个用户的当前请求和下一个请求。
    • 您可以将其存储在 HttpContext.session["query"] 中,而不是使用缓存,这是更好的选择吗? ..谢谢
    • 是的,Session 只是一个用户特定的缓存,所以不需要重新发明它。
    • 前段时间我关闭了 Session,但我没有合理的理由这样做。谢谢提醒,我编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多