2009-08-21 10 views
73

किसी को भी Html.LabelFor(c=>c.MyField) का उपयोग करते समय टेक्स्ट निर्दिष्ट करने के बारे में कोई जानकारी है। यह सिर्फ MyField स्क्रीन पर प्रदर्शित करने के लिए उपयुक्त नाम नहीं हो सकता है, आप इसके बजाय "सुपर शानदार फील्ड" चाहते हैं, लेकिन कोई ओवरलोड नहीं होता है।एचटीएमएल। लेबल के लिए निर्दिष्ट टेक्स्ट [एएसपी.नेट एमवीसी 2]

कोई विचार?

उत्तर

128

आप का उपयोग System.ComponentModel.DataAnnotations.DisplayAttribute:

[Display(Name = "My Field")] 
public string MyField { get; set; } 

अपनी विशेषता पर ResourceType गुण को सेट आप किसी संसाधन फ़ाइल का उपयोग करने की अनुमति देगा।

(चेतावनी के साथ 4 उपयोग System.ComponentModel.DisplayNameAttribute कि प्रदर्शन नाम एक संकलन समय निरंतर होना चाहिए नेट से पहले।)

+0

मैं कल इसका परीक्षण करूंगा। – Kezzer

+9

आप विजेता हैं। आपको 'System.ComponentModel का उपयोग करना होगा;' हालांकि। – Kezzer

+0

मेरे पास कोड कोड जेनरेटर स्वचालित रूप से इन्हें थूकता है, पास्कल-कैज्ड शब्दों के बीच रिक्त स्थान डालता है। एक जादू की तरह काम करता है! – GalacticCowboy

0

मैंने अभी तक सीपी 1 की जांच नहीं की है, लेकिन मैंने स्कॉट की रिलीज को पढ़ लिया है और मुझे याद है कि कोड टी 4 द्वारा उत्पन्न किया गया था। मुझे लगता है कि आप हमेशा इसे संशोधित कर सकते हैं, लेकिन मुझे संदेह होगा कि वे सीपी 2 में ओवरलोड प्रदान करेंगे।

संपादित करें: स्रोत हमेशा उपलब्ध है और इस प्रकार आप बस विधि को संशोधित कर सकते हैं, टी 4 जनरेटर बदल सकते हैं, और आप जाने के लिए अच्छे होंगे। उस मोड के लिए टिकट या अनुरोध (किसी भी तरह) में डाल दें ताकि यह अगले संस्करण में काम कर सके।

+0

शर्म, मैं एक कार्य पूर्वावलोकन कर रहा हूं लेकिन यह वास्तव में व्यवहार्य नहीं है क्योंकि हमारे क्षेत्र के नाम उनके वर्णन समकक्षों की तुलना में काफी नकली हैं। – Kezzer

3

मैं वी 2 डाउनलोड किया है अभी तक नहीं है, इसलिए मैं परीक्षण नहीं कर सकते, लेकिन मेरा मानना ​​है कि यह DynamicData तरह काम करता है, इस स्थिति में आप अपने मॉडल पर कुछ इस तरह करते हैं:

[Display(Name = "The Super Fantastic Field")] 
public string MyField {get;set;} 
+0

प्रदर्शन उपलब्ध नहीं है, और इंटेलिजेंस किसी भी libs में इसे नहीं मिल सकता है। – Kezzer

+0

System.ComponentModel.DataAnnotations.dll का संदर्भ जोड़ें और System.ComponentModel.DataAnnotations का उपयोग करके जोड़ें। – Daniel

+0

इसके बजाय, GAC से System.ComponentModel.DataAnnotations का संदर्भ जोड़ें (यानी संदर्भ संदर्भों के .NET टैब में) – Daniel

26

ताकि आप के लिए कस्टम परीक्षण specifiy में सक्षम होना चाहिए MVC 3 में एक नया अधिभार नहीं है प्रयोगशाला सहायक।

+8

@ एचटीएमएल.लेबेलफ़ोर (मॉडल => मॉडल.आईडकोड, "दोस्ताना नाम") –

40

आसान समाधान सिर्फ निम्नलिखित जोड़ें ध्यान में रखते हुए:

@Html.LabelFor(c=>c.MyField, "My Field") 
0

5 भार के हैं। कई "स्ट्रिंग लेबलटेक्स्ट" का दूसरा पैरामीटर प्रदान करते हैं, जिसे आप "सुपर फैन्टैस्टिक फील्ड" पर सेट करेंगे।

0

दो तरीके
1 "प्रत्यक्ष एनोटेशन"
2 "Annotatinos एक संसाधन के साथ"
प्रत्यक्ष एनोटेशन

एक संसाधन

[Display(Name = "My_Field",ResourceType = typeof(Resource))] 
public string MyField { get; set; } 

दूसरा रास्ता जोड़ने की आवश्यकता होगी के साथ

[Display(Name = "My Field")] 
public string MyField { get; set; } 

Annotatinos हैं संसाधन फ़ाइल में एक मान शायद Resource.resx के रूप में नामित किया गया है।
उपयोग करें जो आपके उद्देश्य के अनुरूप है।

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