2012-02-21 9 views
1

クッキーが設定されているかどうかを確認するためにC#とRazorの構文を使用したいと思います。それが設定されている場合、それはしていない場合、私は変数の値によって異なるHTMLをレンダリングする

<h2> Cookie set </h2>. 

を表示したい、私はこのクッキーを設定している、いくつかのことを確認するために、そう

<h2>Cookie not set</h2> 

を表示したい:

//set cookie 
HttpCookie cookie = Request.Cookies.Get("stackOverflowCookie"); 
if(cookie == null) { 
    cookie = new HttpCookie("stackOverflowCookie"); 
    cookie.Value = "Hi guys!"; 
    cookie.Expires = DateTime.Now.AddDays(1); 
    Response.Cookies.Add(cookie); 

かみそりを使用して、私が望むものを表現するのに、構文的に最も良い方法は何ですか?試してみるとコンパイルエラーが発生します:

@{ 
    if(Request.Cookies["stackOverflowCookie"] == null){ 
     //some other logic is here in my actual code, so an inline statement is not sufficient 
     <h2> Cookie set </h2> 
@} 
@{ else { 

<h2> Cookie not set </h2> 

@} 

明らかにこれは恐ろしい探しであり、動作しません。それは私がそれらを好む機能を示しています。どのようにこの機能を達成する最良の方法はありますか?場合

答えて

1

ような何かを試みることができるあなたの文のロジックは長いシングルライナーよりもあなただけのコードブロック内の変数を設定することができ、許可する場合:

@{ 
    var isCookieSet = Request.Cookies["stackOverflowCookie"] == null && otherConditions; 
} 

そしてをあなたのひげそりコードはちょうどこのように見えるかもしれません:

@if (isCookieSet) { 
    <h2>Cookie set</h2> 
} else { 
    <h2>Cookie not set</h2> 
} 
0

あなたは

@if(Request.Cookies["stackOverflowCookie"] == null) { 
    <h2> Cookie set </h2> 
} else { 
    <h2> Cookie not set </h2> 
} 
1

ちょうど論理を入れて覚えておいてくださいeユーザインタフェース(すなわち、ビュー)。

あなたはクッキーの値を含めるためにビューモデルの編集を検討したい、と単純にIF文を使用して、この変数に応じて、異なるUIを表示することがあります。

@if(model.CookieProperty != null) { 
    <h2>Cookie is set</h2> 
} else { 
    <h2>Cookie is not set</h2> 
} 

そしてコントローラの読みを持ちますクッキー、およびビューモデルのプロパティを設定:

model.CookieProperty = Request.Cookies["cookieName"]; 

これの利点は以下のとおりです。

  • コントローラはこの値に応じて「機能を有効にする」か他のロジックを実行する必要があります。
  • テスト:UI要素をテストするのは難しいです。ビューモデルを簡単にテストできます。
関連する問題