Advanced Routing Behaviour with ASP.NET MVC Routing -
एक यूआरएल को देखते हुए जो निम्न प्रकार का पालन करता है:
प्रथम रंग = {value1} / secondcolor = {value2 }
जहां value1 और value2 भिन्न हो सकते हैं और एक एक्शन विधि की तरह:
प्रोसेसर (स्ट्रिंग रंग 1, स्ट्रिंग रंग 2) में कहें कि नियंत्रक को कॉलर कंट्रोलर कहते हैं।
I निम्न मार्ग मूल्यांकन करना चाहते हैं:
यूआरएल '/ प्रथम रंग = लाल' परिणामस्वरूप कॉल में प्रोसेस कोलर्स ("लाल", रिक्त) / यूआरएल '/ सेकंडरॉलर = ब्लू' प्रोसेस कोलर्स (जैसे कॉल में) नल, "नीला")
यूआरएल 'प्रथम रंग = लाल / दूसरा रंग = नीला' प्रोसेस कोलर्स ("लाल", "नीला") जैसे कॉल में समाप्त होता है
अब से मुझे लगता है कि यह प्राप्त किया जा सकता है कुछ मार्गों के साथ, ऐसा कुछ
मार्ग। नक्शा (रूट, "प्रथम रंग = {रंग 1} / दूसरा रंग = {रंग 2}", नया {नियंत्रक = रंग नियंत्रक, क्रिया = प्रोसेस कोल्सर}) मार्ग .MapRoute (नल, "प्रथम रंग = {रंग 1}}", नया {नियंत्रक = रंग नियंत्रक, कार्रवाई = प्रोसेस कोलॉर्स, रंग 2 = (स्ट्रिंग) नल}) मार्ग। मार्कर (नल, "सेको Ndcolor = {color2}} ", नया {नियंत्रक = ColorController, कार्रवाई = प्रोसेसर, रंग 1 = (स्ट्रिंग) नल})
यह सिर्फ 2 रंगों के लिए पर्याप्त है, लेकिन जहाँ तक मैं हम बता सकते हैं कि यदि हम चाहें तो मार्गों के प्रसार के साथ समाप्त हो जाएंगे, तो 4 रंग कहें और यूआरएल के समान हो:
'/ प्रथम रंग = नीला / दूसरा रंग = लाल / तीसरा रंग = हरा / चौथे रंग = काला '
' / प्रथम रंग = नीला / तीसरा रंग = लाल '
' / तीसरे रंग = लाल / चौथे रंग = काला '
और इसी तरह, हमें किसी भी संयोजन को पूरा करने की आवश्यकता है दिया गया है कि प्रथम रंग हमेशा 2 से पहले होगा, दूसरा हमेशा तीसरे और इससे पहले होगा।
मेरे हास्यास्पद उदाहरण की उपेक्षा करना, इस तरह की स्थिति से निपटने का कोई अच्छा तरीका है, जिसमें बहुत से शामिल नहीं होता है मार्ग और क्रिया विधियों को बनाया जाना चाहिए?
सबसे पहले, यदि आप उस < कोड> कुंजी = मान स्वरूप, फिर मैं यूआरएल के बजाय क्वेरी स्ट्रिंग का उपयोग करने का सुझाव देता हूं।
लेकिन यदि नहीं, तो यू यह कर सकते हैं:
<पूर्व> // इस मार्ग मार्गों को पंजीकृत करें। MapRoute ("रंग", "रंग / प्रक्रिया रंग / {* q}", नया {नियंत्रक = "रंग", क्रिया = " प्रोसेस कोलर्स "});
फिर अपने ColorController
में:
सार्वजनिक क्रियावाही प्रक्रिया कॉलर (स्ट्रिंग q) {string [] रंग = GetColors (q) ; वापसी देखें (); } निजी स्ट्रिंग [] GetColors (स्ट्रिंग q) {if (String.IsNullOrEmptE (q)) {return null; } वापसी q.Split ("/"। ToCharArray (), StringSplitOptions.RemoveEmptyEntries); }
इस मामले में आपके यूआरएल इस तरह होंगे:
site.com/colors/processcolors/red site.com/colors/processcolors/red/green < / प्री>
Comments
Post a Comment