2012-02-26 4 views
8

संपादक का उपयोग करने के लिए टेम्पलेट्स एएसपी.NET एमवीसी 3 की वास्तव में एक अच्छी सुविधा है, लेकिन क्या संपादकों को रिकॉर्ड बनाने के लिए अनुमति देने के लिए एक अप्रचलित टेम्पलेट प्रस्तुत करना संभव है?नए रिकॉर्ड के लिए रिक्त स्थान बनाने के लिए Html.EditorFor का उपयोग

या ऐसा करने का कोई और तरीका है?

तरीकों से मैं इस प्रकार है करने के लिए कोशिश कर रहा हूँ:

@Html.EditorFor(model => model) 
    @Html.EditorFor(x => new List<Business.ViewModel.Affiliate.Contact>()) 
    @Html.EditorFor(new List<Business.ViewModel.Affiliate.Contact>()) 
    @Html.EditorFor(new Business.ViewModel.Affiliate.Contact()) 

पहले एक स्पष्ट रूप से काम करता है, लेकिन बाद में लोगों को (जो प्रदर्शित मैं क्या करने की कोशिश कर रहा हूँ) सभी निम्नलिखित के साथ विफल त्रुटि:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions. 

प्रश्न में मॉडल है:

IEnumerable<Business.ViewModel.Affiliate.Contact> 
+0

आप अपना खुद का कस्टम टेम्पलेट बना सकते हैं या फ्लाई पर खाली मॉडल के लिए केवल एक चर बना सकते हैं: @ {var blankModel = new business.ViewModel.Affiliate.Contact();} @ एचटीएमएल.एडिटरफॉर (खाली मॉडल) जबकि नहीं सबसे साफ, यह –

उत्तर

6

दृश्य मॉडल तैयार करने के लिए नियंत्रक की ज़िम्मेदारी है जो दृश्य में पारित की जाएगी। आप बस अपने नियंत्रक में ऐसा कर सकता है तो अगर आप उदाहरण के लिए की जरूरत है 5 खाली संपर्क पंक्तियों के साथ अपने दृश्य दृश्य मॉडल प्रारंभ करने में:

@model MyViewModel 
... 
@Html.EditorFor(x => x.Contacts) 
:

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     // Add 5 empty contacts 
     Contacts = Enumerable.Range(1, 5).Select(x => new Contact()).ToList() 
    }; 
    return View(model); 
} 

और अपने ध्यान में रखते हुए हमेशा की तरह EditorFor सहायक का उपयोग

यह Contacts संग्रह में जोड़े गए 5 तत्वों में से प्रत्येक के लिए संबंधित संपादक टेम्पलेट प्रस्तुत करेगा।

+0

काम करता है, मैं इसे उत्तर के रूप में जाने जा रहा हूं, क्योंकि यह अंत में उपयोग किया जाने वाला समाधान है और यह भी एक समाधान है जो सबसे अधिक समझ में आता है - नियंत्रक को सटीक दृश्यमान तैयार करना चाहिए जिसे दृश्य को काम करने की आवश्यकता है । – Moo

+0

मैं अपने संपादकीय टेम्पलेट को प्रस्तुत नहीं करने के लिए खोज दिवस चाहता हूं! आप बाहर रेंडर कर सकते हैं! –

0

अपने प्रश्न हैं AJAX के शामिल नहीं करता है, तो मैं निम्नलिखित के रूप में ViewModel डिजाइन होगा:

class MyList 
{ 
    public List<MyRow> Rows {get;set;} 
    public MyRow NewRow {get;set;} 
} 

तो आप आसानी से NewRow संपत्ति के लिए बाध्य कर एक खाली संपादक जोड़ सकते हैं। और नियंत्रक में आप अगली कॉल पर पंक्तियों के लिए नई पंक्ति जोड़ते हैं।

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

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