2011-02-09 3 views
6

ViewBag를 사용하는 순간 MVC 3에서 작업하고 있습니다. ViewBag의 속성 중 하나가 할당되었는지 테스트하고 싶습니다. 나는 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() PHP에서 실제로 값이 있는지 확인합니다. 수동에서 : 당신은 또한 당신의 ViewData 재산 ViewDataDictionary.ContainsKey을 사용할 수 있습니다

NULL로 설정되어있는 변수를 테스트하는 경우

는 isset() FALSE를 반환합니다. ViewData["SectionSubTitle"]ViewBag.SectionSubTitle에 equavilient되어 있기 때문에이 경우에 당신은 할 수 :

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

+0

아, 확인 감사합니다. BTW, 그냥,이 경우에 ViewBag를 남용하지는 않습니까? –

+0

나중에 리팩토링 할 것을 권장합니다. 먼저 작동 시키십시오. ViewBag을 과도하게 사용하지 말고, 물건을 별도의 모델로 그룹화하십시오. –

+0

ViewData.ContainsKey에 대해 +1 –

관련 문제