मैं उन सभी विभिन्न तरीकों से उत्सुक हूं, जो लोग अपने व्यू मॉडेल बना रहे हैं और वे उस विधि को क्यों चुनते हैं।आप अपने व्यू मॉडेल को कैसे पॉप्युलेट/मान्य कर रहे हैं?
मैं यहां कई तरीकों से सोच सकता हूं:
-1। इंजेक्शन रिपोजिटरी - नियंत्रक मॉडल और मानचित्र को व्यूमोडेल में लोड करता है। यहां व्यूमोडेल कन्स्ट्रक्टर पूर्व में सेट करने के लिए विभिन्न संग्रह ले सकता है। एक चुनिंदा सूची में:
public CustomerController(ISomeRepository repository)
{
_repository = repository;
}
public ActionResult Create()
{
CustomerCreateViewModel model = new CustomerCreateViewModel(_repository.GetShipTypes,
_repository.GetStates);
..
..
}
-2। ViewModelbuilder - या तो इंजेक्शन वाले इंजेक्शन के उदाहरण के साथ नियंत्रक में इंजेक्शन या तत्काल। ,
var orderViewModel = orderViewModelBuilder.WithStates().Build(orderId);
-3
>var orderViewModel = orderViewModelBuilder.WithStates().Build(orderId);
या की तरह कुछ के माध्यम से कहा जाता है। सीधे नियंत्रक में (कोई कोड आवश्यक नहीं है - इसकी गन्दा)
-4। कुछ अन्य सेवा (इंजेक्शन या नहीं) है कि डोमेन मॉडल है जो नियंत्रक तो नक्शे या एक ViewModel रिटर्न (किसी को भी इस कर रही है कि विशेष रूप से नाम नहीं एक दृश्य मॉडल वापस जाने के लिए/एक ViewModel बिल्डर वर्ग के रूप में उल्लेख किया?)
public JobCreateViewModel BuildJobCreateViewModel(int parentId)
{
JobCreateViewModel model = new JobCreateViewModel();
model.JobStatus = _unitOfWork.JobRepository.GetJobStatuses();
model.States=_unitOfWork.StateRepository.GetAll();
return model;
}
अब वापसी दृश्य पर - अपने दृश्य मॉडल को सत्यापित करने के संबंध में - क्या आप मानक सत्यापन के लिए मूल व्यूमोडेल क्लास से विरासत में हैं, या अपने सभी व्यूमोडल्स के बीच अपनी मान्यताओं (पूर्व डेटा एनोटेशन विशेषताओं) की प्रतिलिपि बना रहे हैं, या बस सर्वर साइड सत्यापन पर भरोसा करते हैं यह सब आपके डोमेन ऑब्जेक्ट को दोबारा सत्यापित किया जा सकता है?
कोई अन्य? कुछ भी बेहतर है? क्यूं कर?
EDIT नीचे दिए गए लिंक के आधार पर, मुझे जिमी बोगर्ड से व्यूमोडेल के आर्किटेक्चर पर एक अच्छा लेख मिला। हालांकि यह ऊपर दिए गए प्रश्न को सीधे संबोधित नहीं करता है, यह ViewModel जानकारी के लिए यहां आने वाले किसी के लिए एक महान संदर्भ है। http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/
यहां पर एक डाउनवोट था - बस उत्सुक क्यों - कुछ भी मैं स्पष्ट कर सकता हूं? –
मेरे फोन पर और मैंने अनजाने में स्टार की कोशिश करते समय इसे क्लिक किया - क्षमा करें। अब पूर्ववत करने में बहुत देर हो चुकी है। – Jason
आह कोई चिंता नहीं है:) –