在 MasterPage 檔案中求得自己的路徑

摘要:在 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/ 了。


Dev 2Share @ 點部落