के लिए Asp.Net MVC 3 संपादक हम एक गतिशील संपत्ति के साथ काम करने के लिए संपादक-टेम्पलेट प्राप्त करने का प्रयास कर रहे हैं - इसका कोई फायदा नहीं हुआ। शायद आप में से एक हमारी मदद कर सकता है।गतिशील संपत्ति
public class Criterion
{
...
public string Text { get; set; }
public dynamic Value { get; set; }
public Type Type { get; set; }
...
}
हमारे उस्तरा दृश्य एक मॉडल है जो प्रत्येक उस में मापदंड की एक सूची है अनुभागों की एक सूची containg हो जाता है:
यहाँ मोटे तौर पर हमारे वर्ग है। (अंश)
@for (int i = 0; i < model.Sections.Count(); i++)
{
for (int j = 0; j < model.Sections[i].Criteria.Count(); j++)
{
var criterion = model.Sections[i].Criteria[j];
var type = criterion.Type.Name;
var name = "Sections[" + i + "].Criteria[" + j + "].Value";
var criterionDisplayName = criterion.Text;
<label for="[email protected](i)[email protected](j)__Value">@criterionDisplayName</label>
@Html.Editor(name, type)
}
}
यह उदाहरण के लिए प्रदर्शन एक चेकबॉक्स सही ढंग से, लेकिन यह मूल्य का उपयोग नहीं करता है: अपने वास्तविक प्रकार के बारे में - (हम कार्यावधि में इन infos मिल।) इन सभी मानदंडों को संपादन मोड में प्रदर्शित किया जाना चाहिए चेकबॉक्स स्थिति को सही ढंग से सेट करने के लिए (मानदंड की जांच की गई है। वैल्यू सत्य है)। अन्य प्रकार के लिए जाता है, जैसे ints
। (यह POST अनुरोध के बाद फ़ॉर्म को सही तरीके से भरता है, लेकिन ऐसा इसलिए है क्योंकि एमवीसी उपयोगकर्ता इनपुट को पुन: बनाने के लिए एक अस्थायी मॉडल का उपयोग करता है।)
जितना हमने कोशिश की है और शोध किया है: क्या संपादक का उपयोग करना भी संभव है प्रकार dynamic
के गुणों के साथ टेम्पलेट? यदि हां - हम इसे कैसे काम कर सकते हैं? (हम संभावित प्रकार के अनुसार समझना नहीं चाहते हैं। हम वास्तविक प्रकार के आधार पर सही संपादक टेम्पलेट का उपयोग करने के लिए एमवीसी फ्रेमवर्क चाहते हैं।)
यह दृढ़ता से टाइप किए गए दृश्य के साथ काम करता है।मैंने दृढ़ता से टाइप किए गए दृश्य का उपयोग न करने के लिए इंडेक्स-व्यू को बदलने का प्रयास किया: हटाया गया '@model IList' और '@ {var model = (IList ) मॉडल का उपयोग किया गया; } '। फिर मैं '@ Html.Editor (" मॉडल ["+ i +"]। वैल्यू "," मानदंड_ "+ मॉडल [i] .Value.GetType() नाम) ', लेकिन यह मुझे एक त्रुटि देता है - _ मॉडल शब्दकोश में पास किया गया आइटम शून्य है, लेकिन इस शब्दकोश के लिए 'System.Int32' प्रकार के एक गैर-शून्य मॉडल आइटम की आवश्यकता है ._ मैं गलत क्या कर रहा हूं? डिबगिंग मुझे बताता है कि GetType()। इंडेक्स-व्यू में नाम 'Int32' है। –
toni
वैसे - हमें दृढ़ता से टाइप किए गए दृश्य का उपयोग करने की आवश्यकता नहीं है, क्योंकि हम किसी तृतीय पक्ष ढांचे (ऑर्चर्ड से सामग्रीशिप) का उपयोग कर रहे हैं। – toni
हम 'ऑब्जेक्ट' के साथ ऊपर के रूप में डार्न्स दृष्टिकोण का उपयोग कर समाप्त हो गए। हमें केवल गतिशील व्यूमोडेल डालना पड़ा और इसे दृढ़ता से टाइप किए गए संपादक टेम्पलेट में पास करना पड़ा। मूल्यवान इनपुट के लिए धन्यवाद, डारिन। – toni