2011-02-09 1 views
6

私はViewBagを使用する瞬間にMVC 3で作業しています。 ViewBagのプロパティの1つが割り当てられているかどうかをテストしたいと思います。私はPHPであなたがisset(変数)を行うことができることを知っていますが、.NET 4には何か類似していますか?C#.NET 4の 'ダイナミック'オブジェクトのプロパティに対応するPHPのイセットセットとは何ですか?

シナリオは、ViewBagを通してセクションタイトルとセクションサブタイトルを取るネストされたレイアウトを作っていることです。それらはセパレータによって分離され、サブタイトルは任意である。サブタイトルが設定されていない場合は、セパレータを表示したくありません。

これは、私がissetが.NET 4 equivelantに置き換えられる場所を想像する方法です。

@section header 
{ 
    <h2>@ViewBag.SectionTitle</h2> 
    @if(isset(ViewBag.SectionSubTitle)) 
    { 
     <div id="section-title-seperator"> - </div><h3>@ViewBag.SectionSubTitle</h3> 
    } 
} 

私の質問への直接の回答の次に、(私がViewBagを濫用している場合に備えて)別の解決策も開いています。

ありがとうございます。

答えて

14

それは、このようなnullであるかどうかをチェックすることができます:

@if(ViewBag.SectionSubTitle != null)

isset()実際に値が存在するかどうかをチェックするだけです。マニュアルから:あなたは、あなたのViewData性質上ViewDataDictionary.ContainsKeyを使用することができます

NULLに設定されている変数を テスト場合

ISSET()はFALSEを返します。 ViewData["SectionSubTitle"]ViewBag.SectionSubTitleにequavilientされているのでので、この場合には、あなたが行うことができます:

@if(ViewData.ContainsKey("SectionSubTitle"))

+0

ああ、OK感謝を。ちょうど私がViewBagを悪用しているわけではありません。 –

+0

後でリファクタリングすることをお勧めします。まずそれを働かせてください。 ViewBagを使いすぎないでください。物事を別々のモデルにまとめることを検討してください。 –

+0

ViewData.ContainsKeyの場合 –