2011-02-22 10 views
6

ठीक है, मैं एक दृश्य thats दृढ़ता से संग्रह के माध्यम से MyObjectASP.NET MVC सूची और एक ही दृश्य में बनाएं

@model IEnumerable<ViewModels.MyObject> 

मैं पाश का एक संग्रह वस्तुओं की एक सूची बनाने के लिए के रूप में लिखा गया है।

उसी पृष्ठ पर मुझे एक नया MyObject जोड़ने के लिए फ़ॉर्म बनाने की आवश्यकता है।

क्या मेरे मॉडल से दृढ़ता से टाइप किए गए तत्व बनाने के लिए विह लैम्ब्डा अभिव्यक्तियों के साथ एचटीएमएल हेल्पर्स का उपयोग करने का कोई तरीका है?

या यह इस पृष्ठ के फॉर्म भाग को लोड करने के लिए सबसे अच्छा होगा क्योंकि MyObject (संग्रह नहीं) के रूप में टाइप किया गया कोई अन्य आंशिक दृश्य है?

उत्तर

7

आप गुण के रूप में दो दृश्य मॉडल के साथ दृश्य मॉडल बना सकते हैं:

class ListCreateViewModel { 
    ListViewModel ListViewModel { get; set; } 
    CreateViewModel CreateViewModel { get; set; } 
} 

तो आप उपयोग कर सकते

Html.RenderPartial("Create", Model.CreateViewModel); 

आपका आंशिक CreateViewModel मॉडल के रूप में होगा।

तुम भी पूरी तरह से अलग दृश्य और मॉडल बनाने के लिए और कॉल कर सकते हैं:

Html.RenderAction("Create", "Controller"); 

RenderAction नया अनुरोध और दृश्य के रूप में बर्ताव करता है अलग संदर्भ में प्रदान की गई है।

4

मैं ऑब्जेक्ट्स की सूची बनाने के लिए संग्रह के माध्यम से लूप करता हूं।

आप लूप क्यों करते हैं? एक दृश्य में लूपिंग बदसूरत है। आप संपादक टेम्पलेट का उपयोग कर सकते हैं:

@model IEnumerable<ViewModels.MyObject> 
@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="Go!" /> 
} 

और जो मॉडल संग्रह का प्रत्येक आइटम (~/Views/Shared/EditorTemplates/MyObject.cshtml) के लिए सक्रिय किया जाएगा इसी संपादक टेम्पलेट के अंदर:

@model ViewModels.MyObject 
<div> 
    @Html.LabelFor(x => x.Prop1) 
    @Html.TextBoxFor(x => x.Prop1) 
    @Html.ValidationMessageFor(x => x.Prop1) 
</div> 
<div> 
    @Html.LabelFor(x => x.Prop2) 
    @Html.TextBoxFor(x => x.Prop2) 
    @Html.ValidationMessageFor(x => x.Prop2) 
</div> 
... 
+0

वाह! एमवीसी में ऐसा कोई संकेत नहीं था – Baahubali

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