2012-03-25 18 views
9

मैं इसे TextBoxFor का उपयोग करके आसानी से कर सकता हूं लेकिन मैं इसे EditorFor के साथ कैसे कर सकता हूं?@ Html.EditorFor विशेषता प्रकार कैसे बनाएं = "ईमेल"

मुझे डेटा एन्नोटेशन [DataType(DataType.EmailAddress)] का उपयोग करके लगाया गया लेकिन यह ऐसा नहीं करता है।

मुझे समझ में नहीं आता कि DataType एनोटेशन वास्तव में क्या करता है क्योंकि यह पहली नज़र में कुछ भी नहीं करता है।

उत्तर

6

EditorFor सहायक विधि बॉक्स से कुछ सीमित है और अभी तक HTML5 type="email" विशेषता का समर्थन नहीं कर रही है।

आपके विकल्प अभी या तो TextBoxFor का उपयोग कर रहे हैं या एक कस्टम टेम्पलेट बना रहे हैं जो आपको इनपुट की type विशेषता सेट करने की अनुमति देगा। यहां another thread है जो आपके स्वयं के टेम्पलेट्स बनाने के लिए कुछ विकल्पों की समीक्षा करता है।

DataAnnotation [DataType(DataType.EmailAddress)] वास्तव में काफी उपयोगी है। यह आपके फॉर्म फ़ील्ड के id और name को email पर सेट करता है, जिसे आप उपयोगकर्ता क्लाइंट-साइड सत्यापन संदेश दिखाने के लिए jQuery सत्यापन के साथ उपयोग कर सकते हैं। अपने मॉडल वर्ग में DataAnnotation को लागू करने का अर्थ यह भी है कि आपके मॉडल पर ईमेल प्रॉपर्टी स्वचालित रूप से सर्वर की ओर से मान्य हो जाएगी। यदि आप अपने ऐप में अविभाज्य सत्यापन सक्षम करते हैं, तो आप क्लाइंट- और सर्वर-साइड सत्यापन लगभग मुफ्त में प्राप्त करते हैं।

+0

इस TextBoxFor साथ भी ऐसा करने नहीं कर सकता –

13

आप HTML विशेषताएं, ओवरराइड कर सकते हैं जो एक ब्राउज़र type='text' पर वापस आने जाएगा यदि वे इसका समर्थन नहीं करते:

@Html.TextBoxFor(m => m.Email, new { @type = "email" })

6

यह अब समर्थित किया जा रहा है।

@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", @type = "email" } }) 
3

jortizromo के जवाब देने के लिए एक अतिरिक्त के रूप में, आपके पास अब कम से कम दो विकल्प:

  1. में के रूप में विधि EditorFor() के लिए htmlAttributes पैरामीटर में @type निर्दिष्ट

    @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @type = "email" } }) 
    
  2. EmailAddressसे एनोटेशन विशेषता का उपयोग करना इसी Email संपत्ति और विधि EditorFor (के लिए एक सरल कॉल) के लिए मॉडल वर्ग परिभाषानाम स्थान के रूप में में

    ViewModel

    (इस HTML सत्यापन डेटा टैग जो कि एक अच्छा या बुरा विचार अपने कार्य के आधार पर हो सकता है प्रदान करता है)
    [EmailAddress] 
    public string Email { get; set; } 
    

    उस्तरा देखें

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