2011-06-30 4 views
24

ठीक है मैंने अभी एमवीसी में EditorForModel के बारे में पता लगाया है और मैं जानना चाहता हूं कि मुझे अपनी प्रत्येक संपत्ति पर EditorFor के बजाय इसका उपयोग कब करना चाहिए? और जब मैं दृढ़ता से टाइप किए गए दृश्य को जोड़ता हूं तो यह इसका उपयोग नहीं करता है और प्रत्येक संपत्ति पर EditorFor बनाता है?क्यों Html.EditorForModel का उपयोग नहीं करें()

मुझे इस पर देर हो चुकी है ... लेकिन जानकारी के लिए धन्यवाद!

+1

कृपया ब्रैड विल्सन [ब्लॉग पोस्ट] (http पर एक नजर है। typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html) –

उत्तर

3

आपको इसे संभव होने पर उपयोग करना चाहिए, लेकिन कभी-कभी आपको व्यक्तिगत Html.EditorFor उपयोगों की अनुकूलता की आवश्यकता होगी।

क्यों अंतर्निहित टेम्पलेट इसका उपयोग नहीं करते हैं, यह मुख्य रूप से इसलिए है क्योंकि वे सामान्य रूप से मूर्ख हैं, लेकिन अगर मुझे याद है, तो उन्हें प्रत्येक Html.EditorFor के आस-पास तत्वों (जैसे टेबल पंक्तियों आदि) को लपेटने की आवश्यकता है ।

-5

मैंने कभी भी संपादक के लिए उपयोग नहीं किया है और भविष्य में इसका उपयोग करने की कल्पना कभी नहीं की है। संपादक यह मानता है कि यह जानता है कि आप क्या चाहते हैं। आप जानते हैं कि जब आप कुछ मानते हैं तो क्या होता है।

शायद अगर आप किसी और चीज का परीक्षण करने के लिए त्वरित एमवीसी स्पाइक कर रहे थे तो आप EditorFor का उपयोग कर सकते हैं।

+0

आप संपादक टेम्पलेट्स जोड़कर स्वयं "धारणाएं" संपादित कर सकते हैं। वह .cshtml फ़ाइलें है, जब संपादकफॉर विधि चलती है तो whitch चलाया जाता है। F.eks। यदि EditorFor में इनपुट डेटटाइम है तो DateTime.cshtml चलाया जाता है। –

+1

डेटटाइम एक महान उदाहरण है कि मैं EditorFor का उपयोग क्यों नहीं करता हूं।डेटटाइम केवल तारीख, केवल समय या दिनांक-समय हो सकता है। सटीक इनपुट प्रकार को दृश्य में रखकर, मुझे पता है कि एक और फ़ाइल खोलने के बिना कैसे डेटाटाइम फ़ील्ड का इलाज किया जाएगा। – 37Stars

+6

व्यक्तिगत रूप से, मैं इस तरह की चीज़ों को नियंत्रित करने के लिए डेटा एनोटेशन और मॉडल मेटाडेटा प्रदाताओं का उपयोग करना पसंद करता हूं। इसका मतलब है कि मेरे विचार बहुत संक्षिप्त हो सकते हैं और प्रस्तुत आउटपुट को नियंत्रित करने के लिए तर्क एक ही स्थान पर है। –

0

@ HTML.EditorForModel() ?? और अपना खुद का विचार लिखने का मजा छोड़ दो? मुस्कान

मज़ा के अलावा, आदत के रूप में ऐसा करने से बल्कि पागल हो जाता है। निम्नलिखित सामान्य परिदृश्य पर विचार करें - आपके पास एक ग्राहक परिवर्तक है जो आपके ग्राहक तालिका में आपके डेटाबेस में IsMale है। खैर जाहिर है कि आप डिफ़ॉल्ट संस्करण (चेक-बॉक्स के साथ IsMale) नहीं चाहते हैं - आप शायद कुछ और अधिक दोस्ताना चाहते हैं, {select, विकल्प ....,/select} टैग कहें, है ना? यही वह जगह है जहां दृश्य वास्तव में लात मारना शुरू कर देता है। यह अनुकूलन है। हर दृश्य थोड़ा अलग है। आपके पास रेजर इंजन है, इसे अधिकतम करने के लिए इसका फायदा उठाएं! आपके विचार में आप कुछ भी ओवरराइड कर सकते हैं, या मैन्युअल रूप से HTML कोड का एक संपूर्ण हिस्सा भी टाइप कर सकते हैं।

+2

EditorForModel() (कोई तर्क के साथ) को संबोधित नहीं करता है, सम्मेलन के आधार पर कस्टम संपादक टेम्पलेट्स की तलाश करेगा। उस फ़ंक्शन का उपयोग _what_ टेम्पलेट के साथ करने के लिए कुछ भी नहीं है। –

+0

आप कोड व्यसन को क्या कहते हैं? एक कोडी? – frostymarvelous

19

चूंकि स्वीकृत उत्तर एक लिंक-केवल उत्तर है (और हटा दिया गया था), मैंने सोचा कि मैं वास्तव में Brad Wilson के ब्लॉग से प्राप्त प्रश्न का उत्तर दूंगा: ASP.NET MVC 2 Templates, Part 1: Introduction

मॉडल अभिव्यक्ति सरल सहायक हैं जो वर्तमान मॉडल पर काम करते हैं। लाइन DisplayForModel() DisplayFor (मॉडल => मॉडल) के बराबर है।

टी एल; डॉ एक ही विचार EditorFor(model => model) और EditorForModel() के लिए माना जा सकता है; ये सहायक तरीके एक ही चीज़ प्राप्त करते हैं। EditorForModel() मानता है कि मॉडल अभिव्यक्ति @model है जो दृश्य में पारित की गई थी।

उदाहरण के लिए निम्नलिखित मॉडल और दृश्य लें:

public class Person 
{ 
    public string Name {get; set;} 
    public Address MailingAddress {get; set;} 
} 

public class Address 
{ 
    public String Street {get; set;} 
    public String City {get; set;} 
    public String State {get; set;} 
} 

Create.cshtml: // bradwilson:

@model MyNamespace.Models.Person 

/* So, you need an Editor for the Person model? */ 
@Html.EditorForModel() 
/*the above is equivalent to @Html.EditorFor(model => model) */ 

/* you need to specify the Address property that the editor accepts? */ 
@Html.EditorFor(model => model.MailingAddress) 
संबंधित मुद्दे