2012-04-19 18 views
5

मैं इस तरह कुछ करना चाहता हूँ बिना @ Html.EditorFor() का उपयोग कैसे करें तो मैं मॉडल संवाद मैं इस पंक्ति पर jQueryदृश्य मॉडल

<div class="modal" id="modalName" style="display: none;"> 
<div class="modal-header"> 
    <a class="close" data-dismiss="modal">×</a> 
    <h3>Edit Contacts</h3> 
</div> 
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new Dictionary<string, object> { { "class", "form-horizontal" } })) 
{ 
    <div class="modal-body"> 
    @Html.EditorFor(model => new ViewModel(), "ViewModelTemplateName") 
    </div> 
    <div class="modal-footer"> 
     <a href="#" class="btn" data-dismiss="modal">Close</a> 
     <button type="submit" class="btn btn-primary"> 
      Submit</button> 

    </div> 
} 
</div> 

साथ देर से आह्वान करता हूँ बना सकते हैं

@Html.EditorFor(model => new ViewModel(), "ViewModelTemplateName") 

मैं त्रुटि मिलती है

टेम्पलेट्स क्षेत्र का उपयोग, संपत्ति का उपयोग, एकल आयाम सरणी के साथ ही इस्तेमाल किया जा सकता मैं ndex, या सिंगल-पैरामीटर कस्टम इंडेक्सर अभिव्यक्तियां।

मुझे समझ नहीं आता क्यों यह परवाह होगा जहां या क्या उदाहरण (जब तक इसकी सही प्रकार के रूप में) है

@ Html.Partial ("~/दृश्य/साझा/EditorTemplates/ViewModel। cshtml ", नया ViewModel()) चाल करता है, लेकिन मुझे टेम्पलेट को पूरा पथ घोषित करना है ... यह थोड़ा सा बेकार है।

तो वहाँ यह करने के लिए एक बेहतर तरीका है?

+0

खेद है कि लिखने में कोई त्रुटि (मासूम की रक्षा करने के लिए) मैं संपादित करें और ठीक कर देंगे था। – Peter

+1

हाँ, लेकिन मॉडल का उपभोग करना हमेशा ऐसा नहीं होता है जिसे आप करना चाहते हैं। डेटा एनोटेशन अच्छे हैं वे हमें अच्छी मान्यताओं और सुंदर नाम देते हैं। यह अच्छा सिर्फ एक टेम्पलेट में viewmodel प्रस्तुत करना जब मैं jQuery में अपने पृष्ठों के साथ अमीर कुछ करना चाहता हूँ और उन्हें knockoutjs और चहचहाना-बूटस्ट्रैप तरह बातें अपना जादू करते हैं। – Peter

उत्तर

12

तकनीकी तौर पर इसे उदाहरण यही समस्या है नहीं है। यह एक अभिव्यक्ति, नहीं एक समारोह है, कि तुम वहाँ से गुजर रहे हैं और अभिव्यक्ति पार्सर, EditorFor द्वारा इस्तेमाल किया, मेटा डेटा यह गुण आदि की पहचान के लिए उपयोग करता है पाने के लिए new भाव समर्थन नहीं करता।

आप बस EditorFor बयान के बाहर मॉडल का एक नया उदाहरण घोषित करने और यह कर सकते हैं:

@{ var emptyViewModel = new ViewModel(); } 
@Html.EditorFor(model => emptyViewModel, "ViewModelTemplateName") 

यही काम करना चाहिए।

कहा - अभिव्यक्ति में model का हिस्सा उपयोग नहीं कर एक छोटे से अजीब है। आप शायद यह है कि ViewModel के रूप में यह मॉडल प्रकार है अपने आप आंशिक दृश्य के लिए बाहर संवाद निकालने पर विचार करना चाहिए, और फिर आपको लगता है कि में EditorForModel उपयोग कर सकते हैं, और मॉडल आप इसे पारित रूप में एक new ViewModel() का उपयोग कर इस जनक दृश्य से यह कहते हैं।

+0

हाँ जो काम करता है, धन्यवाद ... और आप आंशिक विचार करने के बारे में सही हैं। मैं अब ऐसा करने में लग रहा हूं। – Peter

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