Html.LabelFor निर्दिष्ट पाठ


83

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

कोई विचार?

जवाबों:


139

आप उपयोग करें System.ComponentModel.DataAnnotations.DisplayAttribute:

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

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

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


9
तुम विजेता हो। using System.ComponentModel;हालांकि आपके पास है।
केज़ेर

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

हालांकि यह समाधान काफी अच्छा लगता है, मुझे लगता है Error 381 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type। तो यह समाधान l18n के लिए बुरा लग रहा है।
मार्टिन थोमा

@moose मैंने नए-इन-.NET-4 को प्रतिबिंबित करने के लिए उत्तर अपडेट किया है System.ComponentModel.DataAnnotations.DisplayAttributeजो संसाधन फ़ाइल के उपयोग की अनुमति देता है। यदि आप अभी तक 4 / 4.5 पर नहीं हैं, तो पुराने System.ComponentModel.DisplayNameAttributeको इस तरह बढ़ाया जा सकता है: stackoverflow.com/a/2432520/33533
कर्टिस

@CodeBlend मैं उपयुक्त विशेषताओं के साथ मॉडल कक्षाएं उत्पन्न करने के लिए T4 का उपयोग कर रहा था। मेरे पास एक ऐसा तरीका था जो बड़े अक्षरों में स्ट्रिंग को विभाजित करता है और फिर एक स्थान के साथ फिर से जुड़ जाता है। (यह 3 साल हो गया है, इसलिए इस समय मेरे सामने कोड नहीं है ...)
गैलेक्टिकक्वॉयबॉय


26

एमवीसी 3 में एक नया अधिभार है, इसलिए आपको लेबेलर सहायक के लिए कस्टम परीक्षण निर्दिष्ट करने में सक्षम होना चाहिए।


8
@ Html.LabelFor (मॉडल => model.IdCode, "दोस्ताना नाम")
डेव मातेर

3

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

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

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

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

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

मैं पहले से ही DataAnnotations का उपयोग करता हूं, इसलिए संदर्भ समस्या नहीं है।
केजर

3
आह, क्षमा करें - यह स्पष्ट रूप से Silverlight3 / .NET 4.0 है: msdn.microsoft.com/en-us/library/… मुझे लगता है कि DisplayName वही करने जा रहा है जो आप चाहते हैं, जैसा कि इसकेmecurtis से पता चलता है। यहाँ उस पर अधिक है: davidhayden.com/blog/dave/archive/2009/08/19/…
डैनियल

2

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

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

एक संसाधन के साथ एनोटैटिनोस

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

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


0

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

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


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

0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.