2009-09-17 20 views
10

में बढ़ती उत्पादकता के अपने वादे को पूरा करता है, मैं एक नया एएसपी.नेट एमवीसी प्रोजेक्ट शुरू करने में गहरी घुटने टेक रहा हूं। कई ट्यूटोरियल ने MVC Contrib के उपयोग की सिफारिश की है। अगर मैं एएसपी.नेट एमवीसी के साथ उत्पादकता बढ़ाने के अपने वादे को पूरा करता हूं तो मैं स्टैक ओवरफ्लो समुदाय की राय प्राप्त करना चाहता था। मूल रूप से मेरे आवेदन में leaky abstraction जोड़ने के लायक एमवीसी कंट्राब के लाभ हैं?क्या एमवीसी कंट्रीब एएसपी.नेट एमवीसी

+0

आपको केवल इतना उपयोग करना होगा जितना आप उपयोग करना चाहते हैं। अधिकांश एमवीसी कंट्रीब विचारों को पहले ही एमवीसी वी 2 में शामिल किया जा चुका है, और हमने इसे हमारे प्रोजेक्ट (विशेष रूप से परीक्षण सहायक) पर आवश्यक पाया है। –

उत्तर

10

मुझे लगता है कि परीक्षण के समय एमवीसी कंट्रीब अमूल्य है। वे बहुत सारी विस्तार विधियां प्रदान करते हैं जो आपको रूटिंग और एक्शन परिणामों की स्पष्ट रूप से जांच करने की अनुमति देते हैं। उदाहरण के लिए:

"~/प्रशासन/उपयोगकर्ता/संशोधित करें/testuser" .ShouldMapTo (एक => a.Modify ("testuser"));

... मार्ग के लिए, और कार्रवाई के परिणामों के लिए:

Controller.List() .AssertViewRendered() .WithViewData>() .Count .ShouldEqual (4, "चाहिए 4 उपयोगकर्ता वापस आओ ");

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

 Builder = new TestControllerBuilder(); 
     Builder.CreateController<CT>(); 

परीक्षण से आगे बढ़ते, डि/आईओसी के लिए नियंत्रक कारखानों ताकि आप इसे अपने आप को लिखने के लिए नहीं है, लेकिन नहीं आवश्यक IMHO वास्तव में उपयोगी होते हैं।

अन्य चीज़ जो मुझे एमवीसी कंट्रीब के बारे में पसंद है वह धाराप्रवाह HTML सहायक हैं। मुझे लगता है कि यह बहुत अच्छा है धाराप्रवाह सहायकों इस तरह का उपयोग करके HTML गुण और अन्य डेटा सेट करने के लिए - यहाँ के दो उदाहरण हैं:

<% = this.TextBox ("नाम") लेबल ("गतिविधि। श्रेणी का नाम: ") .मैक्सलेथेंथ (50)। क्लास (" आवश्यक ")

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