ASP.NET MVC में DisplayName
विशेषता और Display
विशेषता के बीच अंतर क्या है ?
ASP.NET MVC में DisplayName
विशेषता और Display
विशेषता के बीच अंतर क्या है ?
जवाबों:
वे दोनों आप एक ही परिणाम दे लेकिन मुख्य अंतर यह है मुझे लगता है कि आप एक निर्दिष्ट नहीं कर सकते है ResourceType
में DisplayName
विशेषता। एमवीसी 2 में एक उदाहरण के लिए, आपको DisplayName
स्थानीयकरण के माध्यम से संसाधन प्रदान करने के लिए विशेषता को उप-वर्ग करना होगा । Display
विशेषता (MVC3 और .NET 4 में नया) ResourceType
"बॉक्स से बाहर" संपत्ति के रूप में अधिभार का समर्थन करता है।
DisplayName
DisplayName
मॉडल मेटाडेटा में सेट करता है। उदाहरण के लिए:
[DisplayName("foo")]
public string MyProperty { get; set; }
और यदि आप अपने विचार में निम्नलिखित का उपयोग करें:
@Html.LabelFor(x => x.MyProperty)
यह उत्पन्न करेगा:
<label for="MyProperty">foo</label>
Display
वही करता है, लेकिन आपको अन्य मेटाडेटा गुण जैसे नाम, विवरण, ...
ब्रैड विल्सन के पास उन विशेषताओं को शामिल करने वाला एक अच्छा ब्लॉग पोस्ट है ।
मुझे लगता है कि वर्तमान उत्तर वास्तविक महत्वपूर्ण और महत्वपूर्ण अंतरों को उजागर करने के लिए उपेक्षा कर रहे हैं और इच्छित उपयोग के लिए इसका क्या मतलब है। हालांकि वे दोनों कुछ स्थितियों में काम कर सकते हैं क्योंकि कार्यान्वयनकर्ता दोनों के समर्थन में बनाया गया है, उनके पास अलग-अलग उपयोग परिदृश्य हैं। दोनों गुण और विधियों की व्याख्या कर सकते हैं लेकिन यहाँ कुछ महत्वपूर्ण अंतर हैं:
DisplayAttribute
System.ComponentModel.DataAnnotations
में नाम स्थान में परिभाषित किया गयाSystem.ComponentModel.DataAnnotations.dll
Description
याShortName
DisplayNameAttribute
System.ComponentModel
नाम स्थान में हैSystem.dll
असेंबली और नेमस्पेस इच्छित उपयोग के लिए बोलते हैं और स्थानीयकरण समर्थन बड़ा किकर है। DisplayNameAttribute
.NET 2 के बाद से आसपास रहा है और ऐसा लगता है कि इसका उद्देश्य विरासत में मिलने वाली संपत्ति ग्रिड में डेवलपर घटकों और संपत्तियों के नामकरण के लिए है, अंत उपयोगकर्ताओं के लिए दिखाई देने वाली चीजों के लिए इतना नहीं है, जिन्हें स्थानीयकरण और इस तरह की आवश्यकता हो सकती है।
DisplayAttribute
बाद में .NET 4 में पेश किया गया था और विशेष रूप से डेटा वर्गों के सदस्यों को लेबल करने के लिए डिज़ाइन किया गया था जो अंत-उपयोगकर्ता दृश्यमान होंगे, इसलिए यह डीटीओ, संस्थाओं और उस तरह की अन्य चीजों के लिए अधिक उपयुक्त है। मुझे यह दुर्भाग्यपूर्ण लगता है कि उन्होंने इसे सीमित कर दिया, इसलिए इसे कक्षाओं में उपयोग नहीं किया जा सकता है।
संपादित करें: ऐसा लगता है कि नवीनतम .NET कोर स्रोत DisplayAttribute
अब कक्षाओं में भी उपयोग करने की अनुमति देता है।
शायद यह .net कोर के लिए विशिष्ट है, मैंने पाया कि DisplayName काम नहीं करेगा लेकिन Display (Name = ...) करता है। यह किसी अन्य समस्या निवारण में शामिल हो सकता है :)
//using statements
using System;
using System.ComponentModel.DataAnnotations; //needed for Display annotation
using System.ComponentModel; //needed for DisplayName annotation
public class Whatever
{
//Property
[Display(Name ="Release Date")]
public DateTime ReleaseDate { get; set; }
}
//cshtml file
@Html.DisplayNameFor(model => model.ReleaseDate)