2012-03-12 11 views
12

क्या एमवीसी में वेबफॉर्म और व्यूबैग में व्यूस्टेट के बीच कोई कार्यात्मक अंतर है? वे "एक ही चीज़" प्रतीत होते हैं। और उसी तरह इस्तेमाल किया जा सकता है। मैं पूछता हूं क्योंकि एमवीसी स्टेटलेस वेब को बढ़ावा देता है और पेज में डेटा भरने से ब्लोट और धीमी प्रदर्शन नहीं करता है। लेकिन ऐसा लगता है कि आप एमवीसी में भी ऐसा कर सकते हैं। उन्होंने जो कुछ किया, प्रतीत होता है, बस इसे एक नया नाम दें।व्यूबैग और व्यूस्टेट के बीच अंतर?

उत्तर

6

वेब फॉर्म में व्यूस्टेट फ़ॉर्म में एक छिपे हुए, एन्क्रिप्टेड फ़ील्ड में फॉर्म डेटा को क्रमबद्ध कर रहा था, इसलिए डेटा को पोस्टबैक पर फिर से बाध्य किया जा सकता था।

व्यूबैग/व्यूडाटा एक शब्दकोश है जहां आप डेटा को "सामान" बना सकते हैं। उदाहरण के लिए, आप इसे अपने कंट्रोलर में जोड़ सकते हैं, फिर इसे अपने व्यू में एक्सेस कर सकते हैं। डेटा dynamic है जो डेटा के साथ काम करना मुश्किल बनाता है। व्यूबैग क्लाइंट को नहीं भेजा जाता है, यह एमवीसी (सर्वर पाइपलाइन) का हिस्सा है।

दोनों से बचा जाना चाहिए।

व्यूस्टेट, ठीक है, इसका उपयोग नहीं कर रहा है और कामकाज ढूंढ रहा है। और ViewMag को ViewModels के उपयोग से बचा जाना चाहिए।

+1

व्यूबैग में यह स्थान है, उदाहरण के लिए DropDownList का उपयोग करके और चयन सूची उत्तीर्ण करना। एमवीसी मचान सीआरयूडी की जांच करें - यह व्यूबैग का उपयोग करता है। आपका बयान बहुत मजबूत है। शायद, उपयुक्त होने पर व्यूबैग पर मॉडल देखें। http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3- अनुप्रयोगों – RickAndMSFT

+1

@ रिक। एंडरसन-at-Microsoft.com - सहमत हैं कि मेरा बयान मजबूत हो सकता है, लेकिन DropDownList के मामले में नहीं। आपका व्यूमोडेल (select चाहिए) के लिए एक संपत्ति हो सकती है (और चाहिए), जो आपके व्यू में बाध्य हो सकती है। वहां व्यूबैग के लिए बिल्कुल कोई ज़रूरत नहीं है। – RPM1984

+0

चयन सूची कोड एएसपी.नेट एमवीसी टूलींग द्वारा उत्पन्न होता है, और अधिकांश लोग मानते हैं कि एक स्वचालित मचान के लिए सही विकल्प है। – RickAndMSFT

2

व्यूबैग क्लाइंट (ब्राउज़र) को नहीं भेजा जाता है। नियंत्रक से दृश्य में संक्रमण का उपयोग करने के लिए यह पूरी तरह से कुछ है (जो क्लाइंट को वापस भेजने से पहले है)।

एमवीसी में, यदि आपको उस पृष्ठ से कोई पोस्टबैक मिलता है, तो आप अपने "राज्य" को पुनर्प्राप्त नहीं करेंगे, जैसे व्यूस्टेट करता है, आपके पास जो भी राज्य है, वह ब्राउज़र है जिसे आप भेजते हैं, और जो कुछ भी आप भेजते हैं।

5

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

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