摘要:在 MasterPage 檔案中求得自己的路徑
這應該是一個本來就提供的方法,不幸的是,我找了很多的參考資料都找不到(也可能是因為沒有需求)。所以想想還是自己寫一個好了。參考程式如下:
VB:
Protected ReadOnly Property MasterPath() As String
Get
Return Replace(Replace(Me.MapPath("."), Me.MapPath("~"), "~"), "\", "/")
End Get
End Property
C#:
string MasterPath { get { return this.MapPath(".").Replace(this.MapPath("~"), "~").Replace("\\", "/"); } }
這個程式是寫在 MasterPage 的 .master.vb 或 .master.cs 檔案裡面,當然也只有 MasterPage 自己可以使用。如果你並不需要在 MasterPage 中寫程式, 或者不需要求得 MasterPage 自己的檔案路徑, 那麼上述程式對你是沒有用處的。
如果想要在 MasterPage 中求得網站的虛擬路徑(例如 / 或 /WebSite1),那麼可以使用以下的函式:
VB:
Replace(Replace(Page.MasterPageFile, Replace(Me.AppRelativeVirtualPath, "~", ""), "/"), "//", "/")
C#:
Page.MasterPageFile.Replace(this.AppRelativeVirtualPath.Replace("~", ""), "/").Replace("//", "/");
假設你的網站路徑是 /WebSite1, 你的 MasterPage 是放在 /WebSite1/MasterPages/ 之下, 那麼你可以使用第一個程式得到 ~/MasterPages; 再透過第二個程式得到 /WebSite1。稍為修改一下, 就可以得到 /WebSite1/MasterPages/ 了。