0

ドロップダウン変更イベントがトリガーされたら、Cookie の値を変更したいと考えています。

ベースコントローラーに次のコードを含む mvc アプリケーションがあります。

public class CustomController : Controller
{
    HttpCookie mYcookie = new HttpCookie("trycookie");
    HttpCookie cookieCounter = new HttpCookie("cookieCounter");

    protected override void OnActionExecuted()
    {
        if (cookieCounter.Value == null)
        {
            mYcookie.Value = "tryvalue";

        // do something here //
        }
    }
}

アプリケーションが実行されると、Cookie のインスタンスが作成されます。次に、Cookie を操作するための jquery があります。

$.cookie("mYcookie", "tryvaluehere");
$.cookie("cookieCounter", "tryvaluehereagain");

ここでの私の問題は、C# コードをデバッグするたびに、Cookie の値が " " になっていることです。しかし、同じ jquery コードで Cookie を警告しようとするたびに、必要な値が得られます

alert($.cookie("mYcookie"));

HttpCookieメソッドの外でインスタンスを宣言しても、インスタンスが再度作成されますか? どんな提案でも喜んでいただければ幸いです。前もって感謝します!

4

2 に答える 2

1

私がしたことは、リクエストから Cookie のインスタンスを作成することです。リクエストが null の場合、その Cookie を新しい Cookie として作成します。

public class CustomController : Controller
{
    HttpCookie mYcookie = this.Request.Cookies["trycookie"];
    HttpCookie cookieCounter = this.Request.Cookies["trycookie"];

    protected override void OnActionExecuted()
    {
        if (cookieCounter == null)
        {
            mYcookie = new HttpCookie("somenamehere");
        }
        else
        {
        // do something here //
        }
    }
}
于 2013-09-05T01:58:50.887 に答える
0

リクエストから Cookie を読み取る必要があります。

public class CustomController : Controller
{
    protected override void OnActionExecuted()
    {
        HttpCookie myCookie = this.Request.Cookies["trycookie"];
        HttpCookie cookieCounter = this.Request.Cookies["cookieCounter"];

        if (cookieCounter != null)
        {
            // do something here //
        }
    }
}

または、Cookie を設定する場合は、Cookie の新しいインスタンスを作成し、それを応答に追加します。

HttpCookie cookie = new HttpCookie("name", "some value");
this.Response.Cookies.Add(cookie);
于 2013-09-04T07:14:55.727 に答える