2016-10-25 21 views
0

我有一個C#網站,其中包括一個母版頁。所以,當用戶第一次打開網站時,我想運行一個腳本來告訴我用戶在哪裏居住。然後,我會將該信息寫入隱藏字段,並且任何時候我需要引用該信息,我都會將其從此隱藏字段中拉出。我會在哪裏放一些只能運行一次的東西?

那麼,我會在哪裏將這個引用放在代碼隱藏中,以至於它只能運行一次?我試圖把它放在protected void master_Page_PreLoad(object sender, EventArgs e)裏面的if (!IsPostBack)裏面,那沒有用。

有什麼建議嗎?

+1

使用會話存儲來檢測您是否查詢過它並存儲它。你可以在頁面加載時做到這一點 – musefan

+2

爲什麼不只是檢查字段的內容?也許,會話變量可能更合適。 –

+1

假設人們將多次訪問該網站,您可以將其存儲爲一個cookie –

回答

0

您可以在Global.asax中頁面指定在session_start方法的值

void Session_Start(object sender, EventArgs e) 
{ 
    setValue(); 
} 

protected void setValue(){ 
    session["DefaultValue"]="test"; 
} 

的在session_start方法將執行僅在創建會話時,一次登錄的用戶,然後存儲在會話中的值將是可在整個應用程序中訪問。

+0

基於已發佈的問題,我猜這應該是一個可用的技巧 –

+0

也可以使用Cookie,或者如果網站需要登錄,也可以使用用戶配置文件。 – pseudocoder

+0

這是常見的做法,通常會遵循,這就是爲什麼Session_Start()存在@pseudocoder –

1

那麼,HiddenField不會滿足您的要求。

我建議你先選擇你喜歡的持久性機制。下面是列出了所有可用的持久性機制在ASP.NET一個偉大的MSDN頁:

ASP.NET State Management Overview

這是覆蓋的機制的列表:

  • 視圖狀態
  • 控制狀態
  • 隱藏字段
  • 列表項
  • 塊餅乾
  • 查詢字符串
  • 應用程序狀態
  • 會話狀態
  • 配置文件屬性

這些的基礎上,我所知道的關於你的問題,我會建議尋找到Cookie,會話狀態或配置文件屬性。這3種機制跟蹤每個用戶的數據,並且可以在整個Web應用程序中保留。

就如何執行你所選擇的機制來讀了,嘗試一些代碼出來,如果您還有其他問題,發佈新問題。

0

如果您正在訪問數據庫中的數據,那麼您可以在登錄後檢索數據並將其存儲在會話中。

如果妳[R使用谷歌地圖,然後在母版頁!的IsPostBack爲您在會話中的數據,如果沒有找到,然後運行從客戶端頁面商店腳本hiddenfield價值訪問數據。並且在回發後存儲會話中隱藏字段的值,如果會話數據爲空。

相關問題