2009-06-10 10 views
42

एएसपी.Net रूटिंग का उपयोग करते समय, आप कोड-पीछे से रूटडेटा कैसे प्राप्त कर सकते हैं?कोड-पीछे से रूटडेटा तक आप कैसे पहुंच सकते हैं?

मुझे पता है कि आप इसे रूटहैंडलर के गेटहट्फहैंडर विधि से प्राप्त कर सकते हैं (आपको RequestContext सौंप दिया गया है), लेकिन क्या आप इसे कोड-पीछे से प्राप्त कर सकते हैं?

क्या तरह

RequestContext.Current.RouteData.Values["whatever"]; 

है ... ... कि आप विश्व स्तर पर उपयोग कर सकते हैं, जैसे आप HttpContext के साथ क्या कर सकते हैं?

या यह है कि रूटडेटा केवल रूटहैंडलर के अंदर से उपयोग किया जाना है?

+0

सिर्फ Url.RouteUrl की तरह एक यूआरएल बनाने के लिए आपको कोड में GetRouteUrl-विधि का उपयोग कर सकते फ़ाइल के पीछे। (मुझे पता है कि यह आपके प्रश्न का उत्तर नहीं है, लेकिन जब मैं इस समस्या के लिए Google हूं तो मुझे हमेशा आपका प्रश्न मिल जाता है। तो शायद यह किसी की मदद करेगा। :-) –

उत्तर

31

आप निम्न का उपयोग कर सकते हैं:

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); 
+8

ऐसा करके जागरूक रहें आप फिर से रूटिंग में कॉल कर रहे हैं फिर से और यह आपकी रूट तालिका को मारने वाले अनुरोधों की संख्या की तरह है। –

0

मुझे लगता है कि आपको रूटहेन्डलर बनाने की आवश्यकता है, तो आप GetHttpHandler ईवेंट के दौरान मानों को HTTPContext में धक्का दे सकते हैं।

foreach (var urlParm in requestContext.RouteData.Values) { 
    requestContext.HttpContext.Items[urlParm.Key] = urlParm.Value; 
} 

आप this MSDN article में अधिक जानकारी प्राप्त कर सकते हैं।

139

आप निम्न का उपयोग कर सकते हैं:

//using System.Web; 
HttpContext.Current.Request.RequestContext.RouteData 
+12

यह करने के लिए यह और अधिक प्रभावी तरीका है। –

+0

@HosamAly – Korayem

+0

पर स्पॉट यह रेंडरएक्शन के साथ काम नहीं करता है – bendytree

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

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