के साथ शून्य मॉडल को संभालना सभी अक्सर मैं एक ऐसी स्थिति में चला जाता हूं जिसमें मेरी परियोजना में एक दृश्य शून्य संदर्भ अपवाद फेंकता है।एमवीसी 3 व्यूज़: फिननेस
@model Johnny.Application.TestModel
<div>@(Model.SomeText)</div>
यह एक त्रुटि फेंकता है तो मॉडलअशक्त है।
लेकिन लोग इसे कैसे प्रबंधित कर रहे हैं? मैं निश्चित रूप से दृश्य में कोड को कूड़े हुए बदसूरत नल चेक के साथ कोड नमूने नहीं देखता हूं। इससे मुझे विश्वास होता है कि ज्यादातर समय, नियंत्रकों को नल मॉडल वापस नहीं करना चाहिए। लेकिन आप इसे अधिक ताकत के साथ कैसे लागू कर सकते हैं?
अभी जैसे ही कोई गलती से नियंत्रक को एक नल मॉडल लौटने का कारण बनता है, दृश्य मॉडल उड़ाता है और गलती में दिखता है। हकीकत में, यह नियंत्रक की गलती थी। और दृश्य समस्या को "पकड़" भी नहीं सकता है, यह केवल तभी होगा जब मॉडल के सदस्यों का उपयोग किया जाए (जो कि समय का सबसे अधिक समय है)।
विभिन्न कारणों से, कुछ विचार शून्य मानों को संभालना चाहते हैं। हालांकि, यह बहुमत का मामला होने की उम्मीद नहीं करेगा। स्पष्ट रूप से यह दृश्य और नियंत्रक के बीच कुछ "अनुबंध" स्थापित करने का मामला है।
मैं विकल्पों मैंने देखा है पसंद नहीं है:
- जांच करें कि मॉडल हर बार यह प्रयोग किया जाता है रिक्त है। बहुत लंगड़ा!
- एक बड़ा अगर कथन पूरे दृश्य को एक नल मॉडल चेक के साथ लपेटें। बर्बाद कोड अचल संपत्ति के बारे में सोचो। लंगड़ा!
- शीर्ष पर फेंकने के साथ जोड़ें। बुरा नहीं है, लेकिन मूर्खतापूर्ण लगता है। हल्के से लंगड़ा
मुझे पता है कि प्यार होता है, तो इन विकल्पों की तरह कुछ "कोई nulls" अनुबंध स्थापित करने के लिए ही अस्तित्व में:
- की तरह [NoNullModels] नियंत्रक पद्धति पर एक विशेषता। मुझे संदेह है कि यह अस्तित्व में है, क्योंकि मुझे नहीं लगता कि नियंत्रक जानता है कि यह किस हुकूमत को देख रहा है।
- ध्यान में रखते हुए @ MVC3.HeyDontAllowNulls की तरह एक संकेतक या एक अपवाद (ऊपर विकल्प 3) की तरह फेंक के कुछ अन्य मानक तरीका
आप एक नल मॉडल क्यों वापस लाएंगे? –
क्या आपने '@ Html.DisplayFor (m => m.SomeText)' –
कोड नमूना विषय पर, इंटरनेट पर 99% कोड नमूने अपवाद हैंडलिंग और इनपुट सत्यापन से रहित हैं। आलस्य से आंशिक रूप से और आंशिक रूप से क्योंकि यह इस बिंदु को भ्रमित करेगा कि कोड नमूना चित्रण कर रहा है। –