2012-05-25 15 views
7

मैं अभी अलग क्लाइंट साइड एमवीसी फ्रेमवर्क के साथ प्रयोग कर रहा हूं (मुख्य रूप से बैकबोन और नॉकआउट)। मैं मान्य करने के लिए एक तरीके से आने की कोशिश कर रहा हूँ। मेरे पास एमवीसी 4 वेब एपीआई है जो केवल डेटा लौटाती है। सभी दृश्य इंजन तर्क क्लाइंट पक्ष पर है। जाहिर है, मैं समझता हूं कि सर्वर-साइड सत्यापन एक जरूरी है। यह, मैं मॉडल बाध्यकारी के माध्यम से डेटा एनीमेशन और मानक एएसपी.नेट एमवीसी सत्यापन के साथ प्राप्त करता हूं।क्लाइंट साइड एमवीसी फ्रेमवर्क (बैकबोन, नॉकआउट, आदि) और सत्यापन

हालांकि, मैं क्लाइंट साइड पर सभी सत्यापन तर्क को डुप्लिकेट करने के साथ समाप्त हुआ। क्या डेटा वापस करने का कोई तरीका है लेकिन इसके साथ सत्यापन प्रमाणीकरण के साथ?

उत्तर

2

नहीं है,

जब सेरेर आप HTTP प्रोटोकॉल आप एक पोस्ट का उपयोग करें या विधि प्राप्त होगा उपयोग करने की आवश्यकता के लिए डेटा दे रही है। यह केवल कुंजी वैल्यू जोड़े को पास कर सकता है। एमवीसी डेटा बाध्यकारी का उपयोग करके आप जटिल वस्तु बनाने के लिए इन कुंजी मान जोड़े को बांधने में सक्षम हैं।

हालांकि सत्यापन पूर्ण करने के लिए मेटाडेटा या कार्यों को स्थानांतरित करने का कोई तरीका नहीं है। उचित प्रमाणीकरण

5

ब्लास्ट-दान आंशिक रूप से सही है, जिसका अर्थ है कि आप अपने सर्वर से अतिरिक्त डेटा को कुंजी से अलग नहीं कर सकते हैं, यह सत्यापित करने के लिए सभी प्रमाणीकरण तर्क को सर्वर और क्लाइंट साइड स्क्रिप्टिंग भाषा दोनों पर लिखा जाना चाहिए। -वैल्यू जोड़े।

हालांकि, आप क्या कर सकते हैं, क्लाइंट को आपके डेटा एनाटेशन का प्रचार कर रहा है ताकि कुछ सत्यापन कोड को फिर से लिखने की आवश्यकता न हो। जटिल नियमों के लिए यह छोटा नहीं है, लेकिन Html.EditorFor हेल्पर्स आपको संलग्न सत्यापन गुणों के साथ इनपुट के लिए टेक्स्ट बॉक्स जेनरेट करने में मदद करेगा जो jquery सत्यापन द्वारा निर्बाध रूप से उठाए गए हैं और फ़ॉर्म सबमिट करने से रोकते हैं। मैं [आवश्यक], [रेंज()] और [RegularExpression()] कुछ नामों के लिए डेटा एनोटेशन के बारे में सोच रहा हूं।

यदि आप एक सामान्य मॉडल बनाते हैं और फिर सीआरयूडी संचालन के लिए दृश्य बनाने के लिए विज़ार्ड का उपयोग कर विजुअल स्टूडियो में नियंत्रक को जोड़ते हैं तो आप एक त्वरित उदाहरण देख सकते हैं। आप देखेंगे कि मॉडल वर्ग में आपके द्वारा उपयोग की जाने वाली डेटा एनोटेशन को आउटपुट एचटीएमएल पर प्रस्तुत किया जा रहा है।

आप HtmlHelper बिना एचटीएमएल अपने आप को (जो मुझे लगता है कि आप नॉकआउट टैग दिया कर रहा हो सकता है) आप DataAnnotationsModelValidatorProvider और this link से शुरू IClientValidatable इंटरफ़ेस देखना चाहें बना रहे हैं। //bradwilson.typepad:/

+0

अधिक है कि यह कैसे विनीत जावास्क्रिप्ट का उपयोग कर पूरा किया है पर ब्रैड विल्सन के ब्लॉग [यहां सत्यापन के लिए] (http में पाया जा सकता:

आप देख सकते हैं, यह अभी भी अज्ञात क्षेत्र यद्यपि है। कॉम/ब्लॉग/2010/10/एमवीसी 3-unobtrusive-validation.html) और [यहां घटनाओं के लिए] (http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-ajax.html) – leon

+0

के लिए धन्यवाद प्रतिक्रिया। हालांकि, मैं परिदृश्य के साथ काम कर रहा हूं जहां सर्वर केवल JSON डेटा देता है। सर्वर पक्ष पर कोई इंजन इंजन तर्क मौजूद नहीं है। मैं क्लाइंट साइड व्यू इंजन (हैंडल बार, मूंछ इत्यादि) का उपयोग करने पर विचार कर रहा था। आमतौर पर सरल सत्यापन (आवश्यक फ़ील्ड, डेटा प्रकार, आदि) के लिए –

+0

मैं jquery सत्यापन प्लगइन की तरह कुछ उपयोग करता हूं; दुर्भाग्यवश उन्हें ब्राउज़र में पुनर्निर्मित करना होगा, लेकिन आपको यह बहुत आसान लगेगा क्योंकि आपको उन सभी अविभाज्य हुहों से निपटने की ज़रूरत नहीं है। जटिल सत्यापन के लिए, मैं आमतौर पर सर्वर पर उन लोगों को करता हूं और एक जेसन प्रतिक्रिया में प्रतिक्रिया प्रदान करता हूं और अपने टेम्पलेट में प्रदर्शित करता हूं, और/या उसी प्लगइन में सत्यापन को हटाने का उपयोग करता हूं। सहमत हैं, डेटा एनोटेशन सर्वर की तरफ जाने का तरीका है। – drogon

संबंधित मुद्दे