जब कोई नियंत्रक किसी मॉडल के आधार पर दृश्य प्रस्तुत करता है तो आप इंडेक्सर (यानी व्यूडाटा ["संपत्ति"] का उपयोग करके व्यूडेटा संग्रह से गुण प्राप्त कर सकते हैं।Asp.net एमवीसी उपयोगकर्ता नियंत्रण ViewData
return View("Message", new { DisplayMessage = "This is a test" });
और मेरे संदेश नियंत्रण पर मैं इस किया था: लेकिन, मैं एक साझा उपयोगकर्ता नियंत्रण है कि मैं का उपयोग कर कॉल करने के लिए निम्नलिखित की कोशिश की है
<%= ViewData["DisplayMessage"] %>
मैं इस DisplayMessage सही ढंग से प्रस्तुत करना होगा लगता होगा, हालांकि, शून्य वापस आ रहा है। चारों ओर फेर का एक भारी खुराक के बाद, मैं अंत में एक "MessageData" वर्ग क्रम में दृढ़ता से मेरे उपयोगकर्ता नियंत्रण टाइप करने के लिए बनाया:
public class MessageControl : ViewUserControl<MessageData>
और अब इस कॉल में काम करता है:
return View("Message", new MessageData() { DisplayMessage = "This is a test" });
और की तरह प्रदर्शित किया जा सकता इस:
<%= ViewData.Model.DisplayMessage %>
क्यों उपयोगकर्ता नियंत्रण मजबूत बिना लिखे ViewData (यानी ViewData [ "DisplayMessage"]।) संग्रह में जोड़े जाने DisplayMessage संपत्ति नहीं होगा? क्या यह डिजाइन द्वारा है? क्या यह समझ में नहीं आता कि ViewData में "DisplayMessage" की कुंजी होगी?