2009-12-02 17 views
3

我想從當前頁面對象獲取pagename.aspx。我不要想通過HttpContext.Current做到這一點。 請求,因爲如果我已經在頁面上做某件事情,爲什麼不從頁面中抓取它......我不需要擔心這裏的任何上下文。從頁面對象獲取PageName.aspx

我猜這個頁面已經有了名字,我只需要追加.aspx,但是有沒有辦法讓它自動得到擴展?

+1

「如果我已經在頁面上,做一些事情,爲什麼不只是從一個頁面搶吧......我不需要擔心這裏的任何環境。「當然,如果沒有上下文,頁面就不能存在。所以在一個頁面上與在一個上下文中是一樣的。 – Hogan 2009-12-02 19:31:40

回答

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

(從http://www.aspcode.net/Get-current-page-name.aspx改編)

+0

我想從頁面對象中獲取它,而不是請求對象。 – PositiveGuy 2009-12-02 19:12:53

+0

你不能依靠從頁面對象獲取它。尤其是在URL路由變得普遍的情況下,頁面URL(PageName.aspx)可能並不總是映射到名爲PageName的頁面類。 喜歡與否,獲取URL中使用的「頁面名稱」的正確方法是使用Request對象。 System.Web.UI.Page的其中一個屬性是Context。你說你不想擔心上下文。但是,Page對象始終可以通過該屬性訪問上下文。 我認爲你需要幫助我們理解爲什麼你非常堅持使用上下文以外的東西。 – Larsenal 2009-12-02 19:56:21

-1

的頁面代碼中,

this.GetType().Name 

this.GetType().Name.Split('_')[0] 
+0

this.GetType()。Name.Replace(「_」,「。」) – Hogan 2009-12-02 18:33:29

+0

Hogan是對的!有時只有 – moomi 2009-12-02 18:39:33

+0

。 – Hogan 2009-12-02 19:29:58

-1

您可以從AppRelativeVirtualPath財產得到它。

+0

這是一個路徑而不是頁面 – Hogan 2009-12-02 18:32:12

+1

因此,從路徑中提取頁面名稱,問題是什麼? – stuartd 2009-12-02 18:43:41

+0

http://msdn.microsoft.com/en-us/library/system.web.ui.templatecontrol.apprelativevirtualpath.aspx 該路徑不包含頁面名稱或文件名稱。 – Hogan 2009-12-02 19:25:45

1

我相信這會工作(但我沒有測試)

string sRet = System.IO.Path.GetFileName(Request.Url.AbsolutePath) 

這是基本相同Larsenal,但它採用的是靜態分析程序,而不是一個對象。

+0

OP不想使用上下文。 – stuartd 2009-12-02 18:40:36

+0

Larsenal的被接受,所以這也是有效的。不要冷落。 – tjmoore 2014-04-11 10:34:14

0

可能有點晚,但這將幫助別人..

var path = Path.GetFileName(Request.PhysicalPath);