2012-07-19 14 views
7

में डिफ़ॉल्ट मान का उपयोग कर रहा है, मेरे पास एक एमवीसी व्यू में कोड का यह टुकड़ा है जो काम करता है, लेकिन यह इस साधारण चीज़ को प्राप्त करने के लिए बहुत सारे कोड की तरह है। इसे और अधिक कुशल बनाने के लिए कोई तरीका?जांच कर रहा है कि व्यूबैग संपत्ति खाली है या

@if (string.IsNullOrEmpty(ViewBag.Name)) 
{ 
@:   
} 
else 
{ 
@:ViewBag.Name 
} 
+1

मैं अपने जवाब में के बारे में एक बात को सचेत करने के लिए है। यदि ViewBag.Name है तो आप आउटपुट को   के रूप में प्राप्त नहीं करते हैं। ऐसा इसलिए है क्योंकि ?? ऑपरेटर केवल शून्य के लिए काम करता है और खाली तार नहीं। – VJAI

उत्तर

5

किसी भी जिस तरह से यह और अधिक कुशल बनाने के लिए? अपने प्रबलता से टाइप किये ध्यान में रखते हुए

public string FormattedName 
{ 
    get { return string.IsNullOrEmpty(this.Name) ? " " : this.Name; } 
} 

और उसके बाद:

हाँ ज़रूर, उपयोग दृश्य मॉडल और ViewBag से छुटकारा पाने के

@Html.DisplayFor(x => x.FormattedName) 

या आप चाहें तो:

@Model.FormattedName 

एक और संभावना कस्टम मदद लिखना है एर:

public static class HtmlExtensions 
{ 
    public static IHtmlString Format(this HtmlHelper html, string data) 
    { 
     if (string.IsNullOrEmpty(data)) 
     { 
      return new HtmlString(" "); 
     } 

     return html.Encode(name); 
    } 
} 

और फिर अपने ध्यान में रखते हुए:

@Html.Format(Model.Name) 

या आप एक कलाकारों के साथ रहने के लिए होगा अगर तुम ViewCrap रखने की जरूरत है (क्षमा करें, .नेट विस्तार विधि प्रेषण का समर्थन नहीं करता गतिशील मानकों के आधार पर):

@Html.Format((string)ViewBag.Name) 
+1

मुझे लगता है कि सामान्य रूप से 'गतिशील 'अति प्रयोग किया जाता है। –

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