在我的网页上使用相同的会话变量

时间:2012-03-30 12:13:01

标签: javascript asp.net asp.net-mvc session session-variables

另一个问题是伙计们。

关于会话变量。 我有一个输入字段(从我之前的一个问题中看到) 我会在这里放一些代码,以便你们可以看到

   function getBaseUrl() {
                return "@Url.Content("~/paging")";
            }

            function LocationSearch(baseUrl) {
                 window.location = getBaseUrl() + "/LocationSearch?searchstring=" + (document.getElementById('vestigingen').value);
            }

这是我的javascript函数调用我的控制器函数。

  <input type="text" class="search-query span3" id="vestigingen">
                  <a class="zoekbtn" href="javascript:void(0);" onclick="LocationSearch();">zoeken</a>

这两个用于将我的搜索字符串传递给我的控制器。

这是我在Paging控制器中的功能

   public ActionResult LocationSearch(int? page, string searchstring)
    {
        if (searchstring != null)
        {
            Session["location"] = searchstring;
        }
        var searchVestigingen = ziekenhuisRepository.GetZiekenhuisList();  //sloppy! get rid of implicity 
        int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
        try
        {
            if (char.IsDigit(Session["location"].ToString(), 0))
            {
                searchVestigingen = ziekenhuisRepository.FindZipcodeVestigingen(Session["location"].ToString());
            }
            else
            {
                searchVestigingen = ziekenhuisRepository.FindLocationVestigingen(Session["location"].ToString());
            }
            if (searchVestigingen.Count() <= 0)
            {
                return View("NoResults");
            }
        }
        catch (Exception)
        {
            return View("NoResults");                
        }

        return View(searchVestigingen.ToPagedList(currentPageIndex, DefaultPageSize));
    }





 public ActionResult ListSearch(int? page, string searchstring)
    {
        if (searchstring != null)
        {
            Session["location"] = searchstring;
        }
      do stuff
     return View(etc. etc. )
    }

正如您所看到的,我正在使用会话变量来浏览我的页面列表(我使用了MvcPaging包)。

有两个函数我想使用相同的会话变量。

  • LocationSearch:有人想要找到的东西插入位置按下提交按钮并显示结果。
  • ListSearch同一个人想要找到其他东西,但不想再次插入相同的位置。

这是我的问题,我如何获得他刚插入的相同值以用于我的其他功能(反之亦然,如果他先按下另一个按钮)?

2 个答案:

答案 0 :(得分:1)

会话,按设计,可用于整个应用程序。无论您使用哪个页面,都可以以相同的方式访问它。

所以你可以在一个类或方法中设置一个值:

Session["location"] = searchstring;

然后从另一个类或方法访问它:

searchstring = (string)Session["location"];

有关详细信息,请参阅MSDN

答案 1 :(得分:0)

Session对象就像是特定用户和会话的全局引用。根据需要使用它,只需从项目的任何位置调用Session["location"]即可。您是否尝试过它并且不起作用或者您只是不确定安全性?

你可能需要像这样调用它:

var location = System.Web.HttpContext.Current.Session["location"].ToString();  

如果用户关闭浏览器,那么知道会话变量将为空也可能是好的。除非您将其保存在客户端或某种类型的数据库中,否则就是这样。