2016-11-14 47 views
0

只有在瀏覽器中第一次訪問網站時,我想在網站的主頁上顯示警告消息。如果打開新選項卡並再次訪問站點,則不應顯示警報消息。但是,如果我關閉瀏覽器並再次打開它,然後訪問此網站,則應顯示警報消息。我應該如何在MVC項目中實現這一點? 如果我將使用「會話」,我想警報消息將顯示在我訪問網站的每個標籤中。如果我使用「LocalStorage」,即使關閉瀏覽器並再次打開,警告消息也不會顯示。請告訴我實現這個或任何其他選擇的最佳方式。首次在瀏覽器中首次打開時,在MVC主頁上顯示警告消息

+0

你應該使用靜態標誌類型全局變量並將其設置爲第一次,並在警報顯示更改標誌值後進行檢查 –

回答

0

替代方法是HTML5 SessionStorage API。只有選項卡處於打開狀態時,SessionStorage變量纔會存在,與LocalStorage相反,LocalStorage一直存在,直到在瀏覽器上手動清除爲止,即沒有到期日期。

你可以找到更多的細節here

的sessionStorage的屬性,可以訪問會話存儲對象當前原點。 sessionStorage與Window.localStorage類似,唯一的區別是當存儲在localStorage中的數據沒有設置過期時,存儲在sessionStorage中的數據在頁面會話結束時被清除。只要瀏覽器處於打開狀態並且在頁面重新加載和恢復時存在,頁面會話就會持續。在新選項卡或窗口中打開頁面將導致啓動新會話,這與會話cookie的工作方式不同。

+0

只要瀏覽器處於打開狀態,並且不僅僅是一個選項卡,我就希望變量存在。 – Dash

0

你可以試試這個,你的_Layout.cshtml創建一個隱藏字段:

<input id="inputAnnounce" type="hidden" [email protected] name="Announcement"/> 

然後在你的Javascript部分,您可以檢查該值,如果它是真的還是假的:

$(document).ready(function() { 

     if (inputAnnounce == "True") { 
      //Do your alert logic here 
     } 
    }); 

然後在您的Model實體上,在您的UserSession模型上添加其他屬性,這在我的情況下是entUserSession:

public static bool blIsAnnounce 
    { 
     get 
     { 
      return _blIsAnnounce; 
     } 
     set { _blIsAnnounce = value; } 
    } 

確保當有人關閉對話框,請致電您的控制器上的功能,使值false,所以它不會再次出現,除非他們註銷和登錄:

public ActionResult fncCloseAnnouncement() 
    { 
     Model.entUserSession.blIsAnnounce = false; 
     return null; 
    } 
相關問題