2012-08-06 34 views
1

我想無縫地保持網站的所有匿名訪問者的狀態。例如,僅在第一次訪問時顯示提示,並最初防止「投票」按鈕出現在客戶端上(通過服務器端的第二級基於IP的過濾導致的)通過cookie分析java-script。在ASP.NET MVC應用程序中保留匿名用戶的狀態信息

如何在客戶端瀏覽器中管理這些Cookie。理想情況下,我想將它們用作字典,可以在服務器和客戶端上讀寫。如果這是一個基本的東西,請告訴我如何將「hasVoted」布爾值賦給用戶的cookie,然後在客戶端和服務器上讀取它。

如果有什麼根本性的錯誤我的想法,請讓我知道=)

回答

1

他們投票後(我假設發生在POST),你要設置Cookie:

[HttpPost] 
public ActionResult Vote() 
{ 
    HttpCookie hasVoted = new HttpCookie("hasVoted", true); 
    Request.Cookies.Add(hasVoted); 

    return RedirectToAction("Index"); 
} 

得到它是這樣的:

[HttpGet] 
public ActionResult Index() 
{ 
    bool hasVoted = Request.Cookies["hasVoted"].Value;   

    return View(); 
} 

如果我這樣做,我會採取hasVoted布爾,怪人它在一個視圖模型,並設置按鈕的基礎上在.aspx頁面中值的可見性。如果你真的想雖然,你可以閱讀和使用javascript寫的cookie:

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

檢查了這一點http://www.quirksmode.org/js/cookies.html

相關問題