2013-01-06 10 views
9

जब MVC कोड आप बहुत बार नीचे की तरह कोड के टुकड़े में चलेंगे से अधिक की तलाश में:हार्डकोडिंग नियंत्रक, एमवीसी अच्छा अभ्यास में देखने और कार्रवाई नाम है?

return RedirectToAction("Index"); 

<li>@Html.ActionLink("Books", "Index", "Books")</li> 

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

आप अपने बेसकंट्रोलर को स्थिर नाम संपत्ति जोड़कर उस समस्या को कम कर सकते हैं, और फिर निम्नानुसार कोड का उपयोग करें (कार्रवाई नामों को पूरा करने में थोड़ा और मुश्किल होगा)।

<li>@Html.ActionLink("Books", "Index", BooksController.Name)</li> 

तो यह हार्ड कोडिंग कुछ है जिसे कम बुराई (एमवीसी का उपयोग न करने पर) माना जाना चाहिए। या लोगों ने इसके आसपास काम करने के लिए कुछ अभ्यास विकसित किए?

+0

कभी भी ऐसी परिस्थिति में भाग नहीं आया जहां यह आया, लेकिन मुझे कामकाज पसंद है और अगर यह आया तो इसका उपयोग करेगा। – AgnosticDev

+5

आप टी 4 एमवीसी की तलाश में हैं। वास्तव में – SLaks

+0

। बस वीडियो देखा। क्या आप इसे उत्तर देना चाहते हैं? –

उत्तर

4

आप T4MVC की तलाश में हैं, जो स्ट्रिंग स्थिरांक के दृढ़ता से टाइप किए गए वर्ग उत्पन्न करता है ।

2

सहजता से हम जानते हैं कि स्ट्रिंग अक्षर एक बुरी चीज हैं, इसलिए आपकी किताबों की प्रवृत्ति सामान्य रूप से अच्छी होती है। विचार स्ट्रिंग को एक ही स्थान पर रखना है, इसलिए जब आपको "पुस्तकें" को "उत्पाद" में बदलने की आवश्यकता है, तो कहें, आपको केवल इसे एक ही स्थान पर बदलना होगा।

हालांकि, ऐसा करने में, आप बहुत ही टूल्स को गड़बड़ कर रहे हैं जो आपकी मदद करेंगे। मैं तो बस "BananaController" से "HomeController" का नाम बदलने के लिए Resharper इस्तेमाल किया, और यह अपने आप @Html.ActionLink(... "Banana" ..)

को @Html.ActionLink(... "Home" ..) के हर संदर्भ मैं अगर वी.एस. Resharper के बिना करना होगा कि पता नहीं है अपडेट किया गया। वीएस हर साल मुझे दोबारा प्रतिक्रिया देने में बेहतर हो रहा है, लेकिन मैं वास्तव में किसी ऐसे व्यक्ति के साथ काम नहीं करता जिसके पास रिशेर्पर नहीं है ...

+0

हाँ, आर # काफी स्मार्ट है। मुझे वह भी पसंद है, जब मैं उन स्ट्रिंग अक्षर पर क्लिक करके कोड पर नेविगेट कर सकता हूं। फिर भी मुझे लगता है कि उन शाब्दिकों को जरूरी नहीं होना चाहिए। –

+0

यदि आप ऐसा करना चाहते हैं जैसे आप टेक्स्ट बुक और नमूना ऐप्स में पढ़ेंगे, तो मैं उन्हें स्ट्रिंग के रूप में छोड़ दूंगा। वह टी 4 एमवीसी जो @ एसएलएक्स का उल्लेख करता है वह एक अच्छा अगला कदम जैसा दिखता है। मैं इस बात पर विचार कर रहा हूं कि सर्वर से और क्लाइंट पर मेरे एमवीसी प्रतिपादन को कैसे स्थानांतरित किया जाए, और उन तारों से पूरी तरह से छुटकारा पाएं, लेकिन मुझे लगता है कि मुझे अभी भी JSON बनाने के लिए उनकी आवश्यकता होगी। मैं टी 4 एमवीसी जांचने जा रहा हूं =) – jamie