2011-02-09 8 views
6

मैं उस समय एमवीसी 3 के साथ काम कर रहा हूं जहां मैं व्यूबैग का उपयोग करता हूं। मैं परीक्षण करना चाहता हूं कि व्यूबैग के गुणों में से एक को असाइन किया गया है या नहीं। मैं PHP में जानता हूं कि आप जारी (चर) कर सकते हैं, लेकिन क्या .NET 4 में कुछ समान है?'गतिशील' ऑब्जेक्ट्स के गुणों के लिए सी # .NET 4 में PHP के जारीकर्ता बराबर क्या है?

परिदृश्य यह है कि मैं एक नेस्टेड लेआउट बना रहा हूं जो व्यूबैग के माध्यम से एक सेक्शन शीर्षक और एक सेक्शन उपशीर्षक लेता है। वे एक सेपरेटर से अलग होते हैं और उप शीर्षक वैकल्पिक है। यदि उप शीर्षक सेट नहीं है तो मैं सेपरेटर को प्रदर्शित नहीं करना चाहता हूं।

इस तरह मैं कल्पना करता हूं कि यह जारी करने के लिए .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 में वास्तव में यह जांचता है कि कोई मूल्य मौजूद है या नहीं। मैनुअल से:

isset() गलत है, तो एक चर है कि रिक्त करने के लिए

आप भी अपनी ViewData संपत्ति पर ViewDataDictionary.ContainsKey उपयोग कर सकते हैं स्थापित किया गया है का परीक्षण कर वापस आ जाएगी। क्योंकि ViewData["SectionSubTitle"]ViewBag.SectionSubTitle को equavilient है इसलिए इस मामले में तुम कर सकते हो:

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

+0

आह, ठीक है, धन्यवाद। बीटीडब्लू, बस यह सुनिश्चित करने के लिए, मैं इस मामले में व्यूबैग का दुरुपयोग नहीं कर रहा हूं? –

+0

मैं अनुशंसा करता हूं कि आप इसे बाद में दोबारा प्रतिक्रिया दें। इसे पहले काम करें। व्यूबैग का उपयोग न करें, अलग-अलग मॉडलों में चीजों को समूहीकृत करने पर विचार करें। –

+0

+1 के लिए ViewData.ContainsKey –

संबंधित मुद्दे