2017-08-02 2 views
0

へのアクセス:私はでき私は、ユーザーがボタンをクリックしたときにJavaScriptを使用してクッキーを設定するASP.NETコアMVCかみそりビューでクッキー値

document.cookie = "menuSize=Large"; 

私はかみそりの構文でこのクッキーにアクセスする必要が出力_Layout.cshtmlの上部の正しいスタイル、ユーザーがページを変更するたび:

@{ 
     if (cookie == "Large") 
     { 
      <style> 
LARGE STYLES 
      </style> 
     } 
     else 
     { 
      <style> 
SMALL STYLES 
      </style> 
     } 
    } 
+0

こんにちは、それはクッキーに値を入れることが重要ですか?あなたはなぜそれをビューバックに入れませんか?あなたはそれに簡単にアクセスできます。私がここで理解しているように、ボタンをクリックし、クッキーを設定し、ビューをロードするので、ポストバックがあります。私が言及したように、なぜあなたはビューバックに値を入れて、かみそりでそれをキャッチしないのですか?または、Request.Cookiesを使用すると、それは次のようになります:@ Request.Cookies –

+0

あなたの質問は何ですか?あなたはどのようにクッキーにアクセスするのか分からない? [Request.Cookie](https://msdn.microsoft.com/en-us/library/system.web.httprequest.cookies.aspx) – Spectarion

答えて

1

あなたはクッキーの値を取得するには、このアプローチを使用することができます。また、Cookieドメインのパスがrootであることを確認してください。また、C#でクッキーの値を取得するヘルパーメソッドを書くこともできます。

@{ 
     if (Request.Cookies["menuSize"].Value== "Large") 
     { 
      <style> 
       LARGE STYLES 
      </style> 
     } 
     else 
     { 
      <style> 
       SMALL STYLES 
      </style> 
     } 
} 
+0

何らかの理由でIntellisenseがRequest.Cookiesを認識していませんでした。私はContext.Requestで動作するようになった。これはASP.NET MVCコアを使用しているためですか? –

+0

何人かのVSが私たちを馬鹿にすることはありません! –

0

私は、ヘッダーに移動し、手動でクライアントの/ SET作成された私のクッキー引き出す必要があった:、

//HACK ridiculous i have to do all this instead of just getting the cookie from the cookies collection 
var cookieFromHeaderString = (context.HttpContext.Request.Headers["Cookie"]).FirstOrDefault(); 

if (cookieFromHeaderString != null) 
{ 

    string[] strArray = cookieFromHeaderString.Split(new string[] { "; " }, StringSplitOptions.None); 
    string whCookie = strArray.Where(m => m.StartsWith("vpWH=")).FirstOrDefault(); 

    if (whCookie != null) 
    { 
     int start = whCookie.IndexOf("=") + 1; 
     string cookieValue = whCookie.Substring(start); 

     string[] whArray = cookieValue.Split(' '); 

     int viewportWidth = 0; 
     int viewportHeight = 0; 

     if (whArray.Length == 2) 
     { 
      int.TryParse(whArray[0], out viewportWidth); 
      int.TryParse(whArray[1], out viewportHeight); 
     } 
    } 
} 
関連する問題