2012-03-30 74 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