मुझे अपने एमवीसी अनुप्रयोग में व्यूमोडल्स के पॉलीमोर्फिक संग्रह के साथ समस्या हो रही है। मुझे यह एक वेब सेवा कॉल के माध्यम से प्राप्त हुआ और मुझे ऑब्जेक्ट प्रकार के आधार पर उन्हें फिर से शुरू करने और उन्हें अपना आंशिक दृश्य देने की आवश्यकता है।एमआईवी आंशिक दृश्यों में पॉलीमोर्फिक व्यू मॉडेल संग्रह और प्रतिपादन
public abstract class ProvinceViewModel
{
public string Code { get; set; }
}
public sealed class OntarioViewModel : ProvinceViewModel { }
public sealed class QuebecViewModel : ProvinceViewModel {}
मेरे विचार में मैं उनके माध्यम से पुन: प्रयास करने और आंशिक दृश्य असाइन करने की कोशिश कर रहा हूं। मुझे इसे काम करने के लिए यहां बहुत सारे प्रकार का कास्टिंग करना है। यदि मैं कोशिश करता हूं और इसे नियंत्रक क्रिया में ले जाता हूं और सार प्रकार में जाता हूं, तो मुझे एक त्रुटि मिलेगी कि हम अमूर्त वर्ग का उदाहरण नहीं बना सकते हैं।
ICollection<ProvinceViewModel> ProvinceList; // collection receive via service
@for (int i = 0, c = ProvinceList.Count; i < c; i++)
{
var currentProvince = this.Model.ElementAt(i);
@switch (additionalRegistry.Code)
{
case "QC":
@Html.Partial("AlbertaDetail", (QuebecViewModel)currentProvince)
break;
case "ON":
@Html.Partial("OntarioDetail", (OntarioViewModel)currentProvince)
break;
default:
@Html.Partial("ProvinceDetail", ProvinceViewModel)
break;
}
}
मेरे पास दृढ़ता से टाइप प्रकार है, ताकि मैं विभिन्न गुणों तक पहुंच सकूं।
मैं इसे और अधिक सुरुचिपूर्ण तरीके से हल करने के बारे में कैसे जाउंगा? क्या मुझे अमूर्त वर्ग के लिए एक नया सरोगेट बेस क्लास बनाने की आवश्यकता होगी ताकि इसका उदाहरण आसान हो सके?
आप 'ProvinceDetail' पेज कर हो सकता था अपने नियंत्रक दृश्य निर्देशिका के भीतर DisplayTemplates फ़ोल्डर में प्रत्येक प्रकार के लिए एक प्रदर्शन टेम्पलेट बनाएँ बदले में अलग-अलग प्रांतों का इलाज करने के बजाय स्विचिंग?यदि आप इन अन्यत्र – DLeh
का उपयोग करते हैं, तो इसे दोहराने के बजाए उस पृष्ठ पर तर्क को रखने की अनुमति होगी यह स्पष्ट नहीं है: क्या आपको प्रांत के प्रत्येक * ठोस प्रकार * के लिए आंशिक दृश्य को तुरंत चालू करने की आवश्यकता है, या प्रत्येक * तत्काल * ? यह अजीब लगता है कि उदाहरण के लिए, आपके पास कई आंशिक QuebecDetail विचार होंगे। – Kjata30
क्षमा करें, मैंने उदाहरण को सरल बनाने की कोशिश की। मुझे प्रत्येक प्रांत के लिए आंशिक दृश्य को तुरंत चालू करने की आवश्यकता है जिसमें कुछ अलग-अलग गुण हैं। उदाहरण के लिए ओन्टारियो, क्यूबेक, मनीतोबा, बीसी के सभी में एक विशिष्ट और अलग आंशिक दृश्य है, बाकी सब कुछ मानक डिफ़ॉल्ट जेनेरिक व्यू यानी मिलता है। ProvinceDetail। परिणाम मुख्य पृष्ठ पर प्रांतों और उनके विवरण की एक सूची होगी। – mflair2000