8

मैं enms का प्रतिनिधित्व करने के लिए मेरे कुछ मॉडल ऑब्जेक्ट्स पर string गुणों का उपयोग कर रहा हूं। मैं केवल तारों का उपयोग कर रहा हूं क्योंकि एंटीटी फ्रेमवर्क कोड फर्स्ट में अभी तक enum समर्थन नहीं है। वैसे भी, मैंने देखा कि System.ComponentModel.DataAnnotations में EnumDataType नामक एक विशेषता है। मैंने इस विशेषता को सेट करने का प्रयास किया, लेकिन ऐसा कुछ भी प्रभावित नहीं होता है।एएसपी.नेट एमवीसी में EnumDataType विशेषता क्या करती है?

मुझे यह उल्लेख करना चाहिए कि मेरा अंतिम लक्ष्य "निर्माण" या "संपादन" दृश्य में किसी भी enum प्रकार के लिए उचित ड्रॉप-डाउन सूची दिखाई देना है। मैंने सोचा कि शायद EnumDataType ऑटो-मचान परिदृश्य में यह आसान बना देगा, लेकिन मुझे यकीन नहीं है कि यह मामला है।

तीन सवाल:

  1. EnumDataType ASP.NET MVC में एक उद्देश्य है?
  2. यदि हां, तो यह क्या करता है?
  3. क्या मुझे का लाभ उठाने के लिए int (string के बजाय) मेरे मॉडल गुणों की आवश्यकता है?

उत्तर

8

EnumDataType वर्तमान में केवल एएसपी.NET गतिशील डेटा साइटों (.NET 4.0 में) द्वारा समर्थित है। आप आम तौर पर अपना खुद का कस्टम एचटीएमएल सहायक बना सकते हैं जो संपत्ति जांच ले लेगा यदि इसमें विशेषता है (प्रतिबिंब द्वारा) और इसके लिए लिंक डाउन से मूल्यों के साथ ड्रॉप डाउन बनाता है।

+0

+1 और धन्यवाद। मैं सोच रहा था कि मुझे शायद एक सहायक विधि की आवश्यकता होगी। क्या मुझे प्रत्येक enum प्रकार के लिए एक सहायक विधि की आवश्यकता है या क्या किसी भी उद्देश्य के लिए काम करने वाले सभी उद्देश्य को लिखना संभव है? – devuxer

+0

मेरा मानना ​​है कि सभी enum प्रकारों के लिए काम कर रहे एकल विधि को लिखना संभव होना चाहिए क्योंकि एनम प्रकार विशेषता से निकाला जाएगा। –

0

एमवीसी 3 में EnumDataTypeAttribute को संभालने के लिए कोई तर्क नहीं है।

0

या तो एमवीसी 3 या ईएफ 4.1 कोड फर्स्ट इस विशेषता के साथ गुणों को मान्य करता प्रतीत होता है। वर्तमान में ईएफ में enum समर्थन की कमी के कारण सुविधाजनक, जिसका अर्थ है कि आप एक पूर्णांक संपत्ति पर विशेषता डाल सकते हैं।

4

इसके लिए मैंने पाया सबसे अच्छा समाधान this blogthis answer के साथ मिला था। यह दृश्य और मॉडल दोनों को बहुत पठनीय और रखरखाव बनाता है।

मेरा full answer here देखें।

मॉडल:

public enum YesPartialNoEnum 
{ 
    [Description("Yes definitely")] 
    Yes, 
    [Description("No way!")] 
    No 
} 

//........ 

[Display(Name = "The label for my dropdown list")] 
public virtual Nullable<YesPartialNoEnum> CuriousQuestion{ get; set; } 

//........ 

दृश्य:

@Html.ValidationMessageFor(model => model.CuriousQuestion) 
संबंधित मुद्दे