2009-05-14 9 views
114

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

ASP.NET MVC में RouteLink() और ActionLink() के बीच क्या अंतर है?

यानी जब आप Html.RouteLink() का उपयोग करते हैं और आप अपने दृश्य में Html.ActionLink() का उपयोग कब करते हैं?

उत्तर

72

कार्य और मार्गों में 1: 1 संबंध नहीं होना चाहिए।

एक्शनलिंक कार्रवाई नाम से पहले मिलान करने वाले मार्ग का उपयोग करके कार्रवाई करने के लिए यूआरएल उत्पन्न करेगा।

रूटलिंक नाम या मार्ग मानों द्वारा निर्धारित किसी विशिष्ट मार्ग पर एक यूआरएल उत्पन्न करेगा।

+0

+1। वास्तव में आसान और दिखाता है कि बहुत सारी संभावनाएं हैं। एमएस दोस्तों को केवल सबसे तेज़ लागू करना चाहिए। लेकिन लोग बल्कि फैंसी लैम्ब्डा को सबसे धीमे इस्तेमाल करते हैं। –

+0

हे धन्यवाद, लेकिन मुझे लगता है कि लिंक टूटा हुआ नहीं है। pls क्या आप मुझे फिर से लिंक प्रदान करेंगे धन्यवाद – user1006544

+4

क्या हमें उदाहरण मिल सकते हैं? – MaylorTaylor

12

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

63

वास्तव में, दो तरीकों से उत्पादन ही है, लेकिन यह थोड़ा अलग अलग तरीकों से उत्पन्न होता है:

Html.ActionLink() आसान ActionLinks तेजी से उत्पन्न करने के लिए बनाता है, और आप क्या प्रदान की गई है से अधिक बुनियादी नियंत्रण दे देंगे। यदि आपके पास बहुत से मार्ग नहीं हैं, या बहुत अधिक या बहुत विशिष्ट जानकारी देने की आवश्यकता नहीं है, तो यह काम ठीक काम करेगा।

Html.RouteLink() विधि थोड़ा अलग तर्क लेता है, और इस प्रकार चीजों को संभालने के तरीके पर आपको थोड़ा अधिक विस्तृत नियंत्रण देता है। जब मैं अपना परिदृश्य थोड़ा अधिक जटिल होता हूं, या जब मेरे पास अधिक विस्तृत मार्ग संरचना होती है तो मैं इस विधि का उपयोग करता हूं।
एक उदाहरण एक हालिया परियोजना है जहां मैं (लचीलापन के लिए) के बजाय कई अलग-अलग मार्ग थे, जो कि एक जटिल व्यक्ति से काफी सरल थे, जो बहुत सारी जानकारी के लिए अनुमति देता था। इस प्रकार, मैं एक ही नियंत्रक के लिए चार या पांच मार्गों के साथ समाप्त हुआ, सभी निर्दिष्ट एक डिफ़ॉल्ट कार्रवाई के साथ। मैं ज्यादातर RouteLink संस्करण का उपयोग करता था, क्योंकि जब मैंने एक रूट नाम निर्दिष्ट किया था, तो डिफ़ॉल्ट पैरामीटर स्वचालित रूप से दर्ज किए गए थे।

उन्हें पसंद करें जैसा कि आप महसूस करते हैं, और जैसा कि वे आपकी परियोजना को समझते हैं। उनमें से किसी के लिए वास्तव में कोई उल्टा/नकारात्मक नहीं है (जो किसी अन्य द्वारा मेल नहीं खाता है ...)।

19

यहां दिए गए अन्य उत्तरों के अलावा, रूटलिंक थोड़ा तेज़ है, और कभी भी गलत मार्ग से मेल नहीं खा सकता क्योंकि आपने अपनी रूटिंग तालिका बदल दी है। एक महान ब्लॉग पोस्ट के लिए

+1

सिमोन चियारेट्टा ने यहां कुछ प्रदर्शन विश्लेषण किया: http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry

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