2010-08-13 12 views

उत्तर

70

पर विचार करें निम्नलिखित मॉडल:

public class MyModel 
{ 
    public string Name { get; set; } 

    [DisplayFormat(NullDisplayText = "No value available!")] 
    public string Email { get; set; } 

} 
मेरे विचार में

:

<%= Html.DisplayTextFor(m => m.Email) %> 

<%: Model.Email %> 

पहली पंक्ति प्रदर्शित करेगा "कोई मूल्य उपलब्ध है" अगर हम ईमेल छोड़ 'अशक्त' जबकि होना करने के लिए दूसरी पंक्ति कुछ भी प्रदर्शित नहीं करेगा।

निष्कर्ष: एचटीएमएल। डिस्प्लेटेक्स्ट फोर आपके गुणों पर डेटा एन्नोटेशन को ध्यान में रखेगा, <%: Model.Email %> नहीं होगा। भी <%: Model.Email %> मान शून्य होने पर "ऑब्जेक्ट संदर्भ त्रुटि" फेंक देगा, लेकिन <%= Html.DisplayTextFor %> wont।

5

खैर, DisplayTextFor तोड़ने नहीं होगा यदि आप एक में उत्तीर्ण नहीं होते हैं मॉडल (या पास शून्य)। मॉडल.इमेल शून्य पर एक अपवाद फेंक देगा। तो, DisplayTextFor अधिक मजबूत है।

दृढ़ता से टाइप किए गए सहायकों का बिंदु अधिक संकलन समय की जांच करने की अनुमति देना है। रिफैक्टरिंग करते समय यह बहुत आसान है।

DisplayTextFor पूरे पृष्ठ पर एक सतत निर्माण (अन्य दृढ़ता से टाइप किए गए सहायकों के साथ) का उपयोग करने की अनुमति देता है। कुछ लोगों को लगता है कि अधिक आकर्षक है।

DisplayTextFor आपको पैरामीटर के रूप में टेम्पलेट्स और फ़ील्ड के नाम पास करने की अनुमति देता है।

6

DisplayTextFor को "DisplayFor" और "EditFor" निष्पादन के दौरान भी कॉल किया जाएगा। इससे यह सुनिश्चित होगा कि कोई भी टेम्पलेटेड हेल्पर्स सही टेम्पलेटेड हेल्पर्स का उपयोग करके टेक्स्ट प्रदर्शित करेगा यदि सेट हो ... तो एक टेम्पलेटेड हेल्पर में बदलाव उस टेक्स्ट आइटम के सभी डिस्प्ले के माध्यम से प्रचार करेगा ... सरल डिस्प्ले, फॉर्म संपादित करें, फॉर्म बनाएं आदि। आदि

+0

तो क्या आप कह रहे हैं कि यह मॉडल संपत्ति के लिए। टोस्टिंग() की तरह है? यदि ऐसा है, तो मैं देख सकता हूं कि मॉडल संपत्ति एक जटिल प्रकार के रूप में सहायक हो रही है। –

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