देखें client validation
domain level validation
करने के लिए आवश्यक होने पर किया जाता है?मॉडल सत्यापन बनाम डोमेन मॉडल सत्यापन
मैं अपने वेब अनुप्रयोगों के लिए ASP.NET MVC
का उपयोग करता हूं। मुझे अपने domain models
और view models
के बीच अंतर करना पसंद है। मेरे डोमेन मॉडल में डेटा होता है जो मेरे डेटाबेस से आता है और मेरे दृश्य मॉडल में मेरे विचार/पृष्ठों पर डेटा होता है।
आइए कहें कि मैं ग्राहक डेटा के साथ काम कर रहा हूं।
मेरे पास Customers
नामक मेरे डेटाबेस में एक टेबल होगी।
मैं एक ग्राहक वर्ग जो कुछ इस तरह दिख सकता है:
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
और मैं एक ही डेटा मैं मेरे विचार पर है कि प्रतिनिधित्व करने के लिए पैदा करेगा ग्राहक दृश्य मॉडल:
[Validator(typeof(CustomerCreateViewModelValidator))]
public class CustomerCreateViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
@model MyProject.ViewModels.Customers.CustomerCreateViewModel
@using (Html.BeginForm())
{
<table>
<tr>
<td>
@Html.TextBoxFor(x => x.FirstName)
@Html.ValidationMessageFor(x => x.FirstName)
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(x => x.LastName)
@Html.ValidationMessageFor(x => x.LastName)
</td>
</tr>
</table>
<button id="SaveButton" type="submit">Save</button>
}
:
मैं एक बनाने का विचार है कि मेरी CustomerCreateViewModel
स्वीकार करता है और मेरे विचार मॉडल करने के लिए अपने इनपुट फ़ील्ड बांधता होगा
जैसा कि आप देख सकते हैं कि मेरे पास CustomerCreateViewModelValidator
है जिसमें मेरे सत्यापन नियम शामिल हैं। उपयोगकर्ता ने टेक्स्ट बॉक्स में कुछ डेटा दर्ज करने के बाद वह सबमिट बटन पर क्लिक करेगा। यदि कुछ फ़ील्ड खाली हैं तो सत्यापन विफल हो जाता है। यदि सभी आवश्यक फ़ील्ड दर्ज किए गए हैं तो सत्यापन सफल हो जाता है। मैं तो इस तरह मेरे डोमेन मॉडल के लिए मेरे विचार मॉडल से डेटा को मैप होगा:
Customer customer = Mapper.Map<Customer>(viewModel);
इस ग्राहक ने डोमेन मॉडल मैं लेने के लिए और मेरी भंडार स्तर पर इसे पारित और यह मेरी मेज पर डेटा कहते हैं।
डोमेन मॉडल पर सत्यापन कब करने की आवश्यकता है? मैं अपने दृश्य मॉडल पर अपना पूरा सत्यापन करता हूं। मैं डेटाबेस में इसे जोड़ने से पहले अपने डोमेन मॉडल में अपने डेटा को मान्य कर सकता हूं लेकिन यह देखकर कि यह दृश्य मॉडल पर मान्य था, क्या यह क्लाइंट पक्ष पर एक ही सत्यापन की प्रतिलिपि नहीं करेगा?
क्या कोई इस सत्यापन मामले पर कुछ प्रकाश साझा कर सकता है?
क्या आपके पास परतों के बीच अलग सत्यापन नियम हैं? इसका मतलब है, क्या यूआई में कुछ वैध होना संभव है जिसे डोमेन में मान्य नहीं माना जाता है? –
इस समय दोनों एक जैसा होना चाहिए। मैं मान्यताओं के बारे में सामान्यीकरण कर रहा हूं, न केवल मेरी परियोजनाओं के लिए विशिष्ट। –
हालांकि होगा कि डीडीडी प्रत्येक डोमेन ऑब्जेक्ट पर 'मान्य()' इंस्टेंस विधि की ओर झुक जाएगा जो स्वयं को मान्य करता है। हालांकि मैं एक डीडीडी विशेषज्ञ से दूर हूं। एक दिलचस्प सवाल के लिए +1। –