2009-11-28 15 views
18

मेरे पास Default.aspx नामक एक एएसपीएक्स पृष्ठ है। Page_Load() पर अपने codebehind से, मैं, "Default.aspx" पाने के लिए अकेले, एक स्ट्रिंग में करना चाहते हैं:एएसपी.नेट: पृष्ठ का फ़ाइल नाम

protected void Page_Load(object sender, EventArgs e) 
{ 
    string aspxFileName = ?; 
} 

क्या मैं — साथ ? कि मुझे क्या ASPX फ़ाइल नाम मिल जाएगा बदल दिया जाना चाहिए?

उत्तर

6
protected void Page_Load(object sender, EventArgs e) 
{ 
    string cssFileName = Path.GetFileName(this.Request.PhysicalPath).Replace(".aspx", ".css"); 
} 
+4

.css के साथ .aspx को प्रतिस्थापित क्यों करें? –

+1

@jdk: मुझे लगता है कि जेम्सब्राउनइड्स ने अपने मौजूदा कोड में से एक से कॉपी और पेस्ट किया था। लेकिन सभी को देखने के लिए सामान्य विचार है। –

24

System.IO.Path.GetFileName (Request.PhysicalPath);

4

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

इस कोड को फ़ाइल में डालकर System.Web.UI.Page क्लास के लिए एक एक्सटेंशन विधि बनाएं। आपको .NET 3.5 का उपयोग करने की आवश्यकता है।

using MyExtensions; 

    protected void Page_Load(object sender, EventArgs e) { 
     string aspxFileName = this.GetFilename(); 
    } 

कॉल अपनी परियोजना में किसी भी वेब फार्म पर इस विधि:

namespace MyExtensions { 
    using System.Web.UI; 

    static public class Extensions { 

     /* You can stuff anybody else's logic into this 
     * method to get the page filename, whichever implementation you prefer. 
     */ 
     static public string GetFilename(this Page p) { 
      // Extract filename. 
      return p.AppRelativeVirtualPath.Substring(
       p.AppRelativeVirtualPath.IndexOf("/") + 1 
       ); 
     } 

    } 
} 

किसी भी ASP.NET वेब प्रपत्र से फ़ाइल नाम (लोड विधि में उदाहरण के लिए आपके द्वारा निर्दिष्ट) प्राप्त करने के लिए।

+2

कृपया सिस्टम नेमस्पेस में कोड न जोड़ें। यह एक बहुत बुरा विचार है। –

+0

हां, मैंने पाया कि नेमस्पेस उपयोग के बारे में कुछ टिप्पणियां निकल सकती हैं क्योंकि मैं इस पोस्ट को अपने नए नेमस्पेस प्रश्न से यहां संदर्भित करता हूं http://stackoverflow.com/questions/1813746/should-i-put-custom-code-inside- माइक्रोस्कोफ्ट-बीसीएल-एफसीएल-नेमस्पेस - इसलिए मैं कस्टम नेमस्पेस का उपयोग करने के लिए इस कोड नमूना को संपादित करने जा रहा हूं। –

+0

ठीक है, लोकप्रिय अभ्यास के अनुरूप इस नमूना के नामस्थान उपयोग को संशोधित करना समाप्त कर दिया है, और उपरोक्त लिंक से इस कोड नमूना को अनलिंक कर दिया है। –

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