आप ASP.NET MVC (xVal, डेटा एनोटेशन जिम्मेदार बताते हैं, आदि) के लिए कई मान्यता ढाँचे में से एक का उपयोग करने के लिए और केवल एक विशेष कार्य के लिए एक मॉडल के क्षेत्रों के एक सबसेट को मान्य, सबसे आसान चाहते हैं समाधान [Bind]
विशेषता का उपयोग करना है।
जबकि मैं निश्चित रूप से ऐसे मामले के बारे में सोच सकता हूं जहां आप केवल मॉडल के फ़ील्ड (यानी Create
एक्शन में) के सबसेट के खिलाफ मान्य होना चाहते हैं, मैं ऐसे मामले के बारे में नहीं सोच सकता जहां आप किसी विशेष फ़ील्ड के सत्यापन चाहते हैं दो अलग-अलग कार्यों के बीच पूरी तरह अलग होना।
डेटा एनोटेशन सत्यापनकर्ता विशेषताओं के संयोजन के साथ एक व्यक्ति मॉडल ऑब्जेक्ट का उपयोग करके यहां एक साधारण उदाहरण है। Create
और Update
कार्रवाई मॉडल के फ़ील्ड के एक अलग सेट के विरुद्ध मान्य होगी।
मॉडल:
public class Person
{
[Required]
Int32 Id { get; set; }
[Required]
String FirstName {get; set;}
[Required]
String LastName {get; set;}
}
नियंत्रक क्रिया:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "Id")] Person person)
{
// this action will not perform any validation checks against the Id property of the model
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(Person person)
{
// this action will perform validation checks against all model properties, including Id
}
उपरोक्त उदाहरण में, Create
कार्रवाई पूरी तरह से 01 पर ध्यान नहीं देगाPerson
मॉडल ऑब्जेक्ट की विशेषता। यह इस संपत्ति को बांधने का प्रयास नहीं करेगा, न ही यह इसके खिलाफ कोई सत्यापन करने का प्रयास करेगा। चूंकि किसी व्यक्ति के पास सृजन के समय कोई आईडी नहीं होगी, वही वही है जो आप चाहते हैं। दूसरी ओर, Update
कार्रवाई, मॉडल के सभी गुणों के खिलाफ बाध्य और मान्य होगी।
तथ्य यह है कि Bind
विशेषता विधि तर्क पर निर्दिष्ट है जो कोड को बदसूरत तरफ थोड़ा सा बना सकता है। हालांकि, अगर Exclude
सूची लंबी हो जाती है, तो आप कुरूपता को कम करने में मदद के लिए हमेशा कुछ अतिरिक्त लाइन ब्रेक और व्हाइटस्पेस जोड़ सकते हैं।
स्रोत
2009-10-20 19:58:55
ग्रेट उत्तर। धन्यवाद – user10479