2009-12-09 12 views
21

मैं इस का उपयोग कर रहा वर्तमान पृष्ठ name..so इस उदाहरण के लिए रिटर्न पाने के लिए MyPage.aspxबेहतर रास्ता पाने के लिए पृष्ठ का नाम

public string GetCurrentPageName() 
{ 
    string urlPath = Request.Url.AbsolutePath; 
    FileInfo fileInfo = new FileInfo(urlPath); 
    string pageName = fileInfo.Name; 
    return pageName; 
} 

वहाँ एक आसान तरीका हो गया है? मतलब है कि .NET ढांचे में एक मौजूदा विधि या संपत्ति होनी चाहिए जो किसी को लगता है।

उत्तर

7

HttpContext.Current.CurrentHandler क्या आप खोज रहे हैं?

जब से तुम बनाम

var page = (Page) HttpContext.Current.CurrentHandler; 
string url = page.AppRelativeVirtualPath; 

यह @Markus ओल्सन से जानकारी के साथ की तर्ज पर पेज वस्तु कुछ भौतिक फ़ाइल के नाम में अधिक रुचि रखते हैं आप किसी भी बिंदु में पेज तक पहुँच दे सकते इसके निष्पादन के दौरान भी यदि आप पृष्ठ वर्ग के बाहर हैं।

0
नहीं

काफी बेहतर है, लेकिन आप इस विस्तार विधि की कोशिश कर सकते:

public static string GetPageName(this Page myPage) 
{ 
    FileInfo fi =new FileInfo(myPage.MapPath(myPage.AppRelativeVirtualPath)); 
    return fi.Name; 
} 

और अपने पृष्ठ की "OnInit" या जो कुछ भी रूप में विधि में इसे कहते:

string pageName = this.GetPageName(); 

मार्क

3

सिर्फ रुचि के लिए मैंने इंटेलिजेंस के साथ थोड़ी सी खोज की। कोई संपत्ति नहीं मिली अन्य रास्ते में अभी भी एक ही तर्क है।

string currentPageName = System.IO.Path.GetFileName(Request.Url.AbsolutePath); 
1

रूप this earlier question of yours के जवाब में से एक में बताया गया था, मैं एक विकल्प है कि मुझे एक FileInfo वस्तु बनाने की जरूरत नहीं थी के लिए जाना चाहते हैं।

अनुरोधित पृष्ठ और फ़ाइल सिस्टम ऑब्जेक्ट के बीच हमेशा प्रत्यक्ष मैपिंग नहीं होता है, खासकर जब रूटिंग/यूआरएल रीराइटिंग आदि खेलने के लिए आता है।

34

जिस तरीके से आप जो खोज रहे हैं उसे समझने का तरीका वर्तमान में एएसपीएक्स पृष्ठ, यानी System.Web.UI.Page के नाम को पुनर्प्राप्त करने का एक प्रभावी तरीका है।

यदि यह सच है तो आपको किसी भी FileInfo ऑब्जेक्ट से निपटना नहीं होगा या filesytem को हिट नहीं करना चाहिए। पेज ऑब्जेक्ट पर बस AppRelativeVirtualPath property का उपयोग करें।

आप अपने वर्तमान में क्रियान्वित पेज के पूरी तरह से योग्य (या "जड़ें") पथ प्राप्त करने के लिए wan't, तो आप इस

string path = Server.MapPath(Page.AppRelativeVirtualPath); 

AppRelativeVirtualPath का उपयोग करते हुए की तरह Server.MapPath उपयोग कर सकते हैं और भी काम करने का लाभ है जब आप यूआरएल रीराइटिंग का उपयोग कर रहे हैं और चूंकि यह Request.Url (जो आपके उपयोगकर्ताओं द्वारा प्रदान किया जाता है) का उपयोग नहीं करता है, तो आपको संभावित रूप से दुर्भावनापूर्ण डेटा के बारे में चिंता करने की आवश्यकता नहीं है।

+1

** सर्वर के लिए कोई जरूरत नहीं ** MapPath -। "पृष्ठ" ही वर्ग एक MapPath विधि, है भी –

+1

अच्छा पकड़ @mars_c =) –

1

मंद MyPage के रूप में स्ट्रिंग = Path.GetFileName (Page.AppRelativeVirtualPath.ToString)

यह एक कार्य .ToString के लिए मुझे

3

मैं Request.Url.Segments.Last() है, जो मुझे लगता है कि काफी खूबसूरत है का उपयोग करें।

0
System.IO.Path.GetFileName(Request.PhysicalPath) 
संबंधित मुद्दे