का उपयोग कर रहा ASP.NET MVC 3.0 में नया हूँ और MVC ViewModel डिजाइन का उपयोग एक आवेदन बनाने की कोशिश बाइंडिंग के लिए उत्तम आचरण ..MVC .. ViewModel इंटरफेस उदाहरण
मैं सोच रहा था क्या सर्वोत्तम प्रथाओं regrading कर रहे हैं नियंत्रकों ViewModels के लिए और नीचे कुछ प्रश्न हैं .. यह मेरी समझ अब तक है (जो गलत हो सकती है) ..
- हम मॉडल बनाते हैं।
- एक ही नाम के साथ एक नई कक्षा और घोषणा गुण बनाकर व्यू मॉडेल बनाएं और बेस मॉडल कक्षाओं के रूप में टाइप करें (बेस मॉडल के आईडी फ़ील्ड्स सहित जिन्हें आप बाद में अपडेट करना चाहते हैं .. और कक्षाएं किसी भी तरह से लिंक नहीं हैं)।
- प्रत्येक बेस मॉडल के लिए एक रिपोजिटरी बनाएं (डेटा ect ढूंढने और सहेजने के लिए)।
- प्रत्येक व्यूमोडल्स के लिए एक नियंत्रक कार्रवाई बनाएं (जो मूल्यों को पुनर्प्राप्त करने के लिए बेस क्लास के भंडारों तक पहुंचें और इन मानों को व्यूमोडेल में रखें, फिर व्यूमोडेल को व्यूमोडेल व्यू में पास करें)।
- ViewModels से दृश्य (ViewModel दृश्य)
- में ViewModel नियंत्रक अद्यतन (बाद का) विधि अपडेट ViewModel वस्तु प्राप्त है और यह बेस मॉडल वस्तुओं में तब्दील (शायद Automapper का उपयोग करें?) और अगले बचाने के बेस मॉडल वापस वस्तुओं को बनाने के अपने भंडारों का उपयोग करके और इस तरह बाध्यकारी लागू करें? "TryUpdate < 'आईपर्सन> (व्यक्ति)", "TryUpdate <' आईपलेस> (स्थान);" (यह गलत लगता है, इसका उद्देश्य मूल्यों को वापस व्यूमोडेल से मूल वर्गों में रखना है, बाध्यकारी लागू करना, भंडारों का उपयोग करके आधार मॉडल को वापस सहेजना है! .. यह रिपॉजिटरीज़ का उपयोग करने के लिए प्रतीत नहीं होता .. TryUpdate < 'आईपर्सन> (व्यक्ति); मैं इस तरह कुछ देखने की उम्मीद करता हूं: व्यक्ति। सेव (आईपीरसन) .. जहां "व्यक्ति में मान होते हैं", "एसवेव भंडार है", और "आईपर्सन में बाइंडिंग के लिए उपयोग करने के लिए बाध्यकारी विशेषताएँ हैं"? .. अगर यह सही है सुनिश्चित नहीं हैं ..
अब तक मैं एक नया वर्ग बनाने और एक ही नाम का उपयोग विभिन्न आधार मॉडल से विशेषताओं जोड़कर ViewModels बनाया है इस बिंदु मैं निम्नलिखित प्रश्न हैं पर:।
प्रश्न 1: क्या प्रत्येक व्यू मॉडेल का अपना सी है ऑनलाइनर और इसके मूल्य प्राप्त करने के लिए प्रत्येक बेस मॉडल रिपोजिटरी कक्षाओं तक पहुंच सकते हैं?
प्रश्न 2: व्यूमोडेल में आपको उन सभी मूल मॉडलों का आईडी फ़ील्ड शामिल करना चाहिए, जिनके आप गुणों का उपयोग कर रहे हैं, इस पर विचार करते हुए कि आप व्यू मॉडल्स कंट्रोलर के माध्यम से बेस मॉडल्स रिपोजिटरी में अपडेट को पोस्ट करना चाहते हैं (आवश्यकता है आईडी मान)?
प्रश्न 3: सहेजने के लिए भंडार का उपयोग कर नियंत्रक में मॉडल को बाध्य करने के लिए आप इंटरफ़ेस का उपयोग करके विशेषताओं को कैसे बाध्य करेंगे।
- 2x साधारण मॉडल, 1x सरल ViewModel, के लिए 1x इंटरफ़ेस:
मैं एक ट्यूटोरियल या संसाधन है कि कदम उदाहरण के द्वारा एक कदम में सब कुछ बताते हैं खोजने में असमर्थ किया गया है, एक पूरा जवाब निम्नलिखित उदाहरण होगा बाध्यकारी, अद्यतन पर बाध्यकारी के लिए एक इंटरफ़ेस वर्ग का उपयोग कर 1x सरल नियंत्रक, 1x भंडार .. यानी
// MODEL1
public class Person
{
int PersonID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
DateTime DOB {get;set}
}
// MODEL2
public class Place
{
int PlaceID {get;set;}
string Description {get;set;}
string AreaType {get;set;}
string PostCode {get;set;}
}
// ViewModel (मॉडल से विशेषताओं वाली)
publc class ViewModel
{
//Person attributes
int PersonID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
//Place attributes
int PlaceID {get;set;}
string Description {get;set;}
string AreaType {get;set;}
//other attributes
string someOtherAttributeForDisplay {get;set}
}
// MODEL1 इंटरफेस (पर बाध्यकारी के लिए मॉडल)
public interface IPerson
{
string FirstName {get;set;}
}
// MODEL2 (मॉडल पर बाध्यकारी के लिए)
public interface IPlace
{
string Description {get;set;}
string AreaType {get;set}
}
// ViewModelController इंटरफ़ेस?
{
//What goes here?
}
// रिपोजिटरी?
{
//what goes here?
}
देख लिया? –
हाय मिच, मैं अपनी परियोजनाओं में एकता और एंटीलिब जोड़ने के लिए NuGet का उपयोग कर रहा हूं, मुझे अभी तक उनके उद्देश्यों के बारे में पूरा यकीन नहीं है .. – HonourCode