2012-03-30 71 views
0

另一个问题家伙。在我的页面中使用相同的会话变量

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

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> 

这两个是用来传递我的搜索字符串到我的控制器。

这是我在我的呼叫控制器

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.) 
    } 

正如你可以看到我使用的会话变量要经过我的pagedlist功能(我用MvcPaging包)。

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

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

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

+0

关于您的会话没有什么应该改变,它被设计为被多个页面使用。 – jrummell 2012-03-30 12:17:30

+0

原谅我的无知,但让我们说我在洛杉矶键入它做它应该做的事情,分页工作,我怎么能在我的其他功能获得相同的会话变量。我应该参考一下吗? – Shinji 2012-03-30 12:26:10

回答

0

Session对象就像是特定用户和会话的全局引用。无论您想要使用它,只需在项目的任何地方拨打Session["location"]即可。你有没有试过它,它不工作,或者你只是不确定安全?

您可能需要调用它虽然:

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

它也可能是很好的了解,如果用户关闭浏览器会话变量将是空的。这是除非你保存在客户端或某种数据库。

+0

你是正确的谢谢! – Shinji 2012-03-30 17:59:18

1

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

所以,你可以在一个类或方法的设定值:

Session["location"] = searchstring; 

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

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

更多信息请参见MSDN