1

Webサイトのすべての匿名の訪問者の状態をシームレスに維持したいと思います。たとえば、最初の訪問時にのみヒントを表示し、最初に「投票」ボタンがクライアントでjava-scriptを分析するvia-cookieに表示されないようにします(サーバー側の第2レベルのIPベースのフィルタリングが原因です)。

クライアントブラウザでこれらのCookieを管理するにはどうすればよいですか。理想的には、サーバーとクライアントの両方で読み書きできる辞書として使用したいと思います。これがすべて基本的なものである場合は、「hasVoted」ブール値をユーザーのCookieに割り当てて、クライアントとサーバーで読み取る方法を示してください。

私の考えに根本的な問題がある場合は、私に知らせてください=)

4

1 に答える 1

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ブール値を取得し、ViewModelでワックして、.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

于 2012-08-06T23:00:12.693 に答える