2009-04-06 11 views
5

मैं सिस्टम.Web.Routing का उपयोग कर रहा हूं कुछ बेहतर यूआरएल के लिए और एक समस्या में आ गया है। मुझे उस वास्तविक पृष्ठ को जानने की ज़रूरत है जो अनुरोध को संभालने में है।Asp.Net System.Web.Routing वास्तविक .aspx पृष्ठ

उदाहरण के लिए एक अनुरोध के रूप में आती है:

/management/default.aspx 

मैं केवल System.Web.Routing उपयोग कर रहा हूँ:

/basketball/home 

मैं पेज कि, उस अनुरोध को संभालती है की तरह खोजने की जरूरत है और एमवीसी नहीं। मेरे पास RequestContext का एक हैंडल है जिसमें कुछ रूट जानकारी शामिल है, लेकिन मुझे नहीं लगता कि मुझे क्या चाहिए।

अग्रिम धन्यवाद।

******* अद्यतन *******

मैं Context.CurrentHandler जो मुझे दे "ASP.management_default_aspx" का उपयोग करने में सक्षम था, नहीं बिल्कुल पेज लेकिन पर्याप्त पेज का नाम पाने के लिए।

उत्तर

-1

मैं Context.CurrentHandler का उपयोग करने में सक्षम था जो मुझे "ASP.management_default_aspx" देता है, बिल्कुल पृष्ठ नहीं बल्कि पृष्ठ का नाम पाने के लिए पर्याप्त है।

2

क्या आप इसे वर्तमान HttpContext ऑब्जेक्ट से पुनर्प्राप्त नहीं कर सकते?

शायद कुछ इस तरह:

public string GetCurrentPageName() 
{ 
    string sPath = System.Web.HttpContext.Current.Request.Url.AbsolutePath; 
    System.IO.FileInfo oInfo = new System.IO.FileInfo(sPath); 
    string sRet = oInfo.Name; 
    return sRet; 
} 

अद्यतन:
आप इस लेख की कोशिश की?

How to: Construct a URL from a Route

आप इसे रूटिंग तालिका आप का निर्माण किया है से वापस फिर से प्राप्त करने में सक्षम होना चाहिए।

+0

यह काम नहीं करता है क्योंकि System.Web.HttpContext.Current.Request.Url.AbsolutePath मुझे/बास्केटबॉल/घर देता है, जो वास्तव में मौजूद नहीं है। –

+0

मैंने रूटिंग टेबल का उपयोग करके इसे खोजने का प्रयास किया है, लेकिन हैंडलर के लिए कोई सार्वजनिक सदस्य या एक्सेसर नहीं है। एक रूट से यूआरएल बनाने पर वह लेख केवल यूआरएल देता है, जो '/ बास्केटबाल/होम' होगा और एएसपीएक्स पेज नहीं होगा। –

+0

उस आलेख में वर्णित एक और चीज़ की कोशिश कर रहा है। –

3

वास्तव में वास्तविक पृष्ठ प्राप्त करने के लिए एक और आसान तरीका है:

String vPath = ((System.Web.Routing.PageRouteHandler)Page.RouteData.RouteHandler).VirtualPath
जाँच करने के लिए Page.RouteData.RouteHandler रिक्त नहीं है मत भूलना - जब आप w/ओ ASP.Net रूटिंग पृष्ठ हो रही है लेकिन सीधे।

0

इस कोड का उपयोग का प्रयास करें: के भयानक जवाब काम किया vhinn

Page.AppRelativeVirtualPath 
+1

पर 1: 1 मैप करेगा, यह समाधान काम करता है !!! –

1

...

Page.AppRelativeVirtualPath 

तुम सिर्फ प्रारंभिक टिल्ड हटाने के लिए ("~"), और आप के लिए तैयार हैं चले जाओ।

var path = Page.AppRelativeVirtualPath.Replace("~", String.Empty); 

मुझे नहीं पता कि यह क्यों डाउनवॉट किया गया था। एक आकर्षण की तरह मेरे लिए काम किया।

+1

मुझे यह समाधान पसंद है क्योंकि यह उन पृष्ठों में भी काम करता है जो रूट नहीं किए गए हैं। (webforms asp.net 4.0 पर परीक्षण) –

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