2011-09-19 61 views
0

如果它是一個正常的頁面,我可以使用如何從masterpage代碼頁獲取applicationpath?

public static string GetRootPathJS(Page page) 
{ 
    StringBuilder strBuilder = new StringBuilder(); 

    string strApp = page.Request.ApplicationPath; 
    if (strApp == "/") strApp = ""; 

    strBuilder.Append("<script type='text/javascript'>"); 
    strBuilder.AppendFormat("rootPath=\"" + strApp + "\";"); 
    strBuilder.Append("</script>"); 

    return strBuilder.ToString(); 
} 

在pageonload方法就叫

ClientScript.RegisterStartupScript(this.GetType(), "root", GetRootPathJS(this)); 

在此之後,我可以在客戶端使用javascript直接調用ROOTPATH。但是在母版頁代碼頁中沒有ClientScript參考。如何在主頁面代碼頁中獲取rootpath。我也嘗試從子頁面獲取rootpath,但是,masterpage中的javascript找不到在子頁面中定義的rootpath。

回答

2

如果我正確理解你的問題,試圖在Javascript中獲取根路徑?

如果是這樣你可以使用在masterpage.master

<script type="text/javascript"> 
    var baseUrl = '<%=Page.ResolveUrl("~")%>'; 
</script> 
+0

是的下面,我想在JavaScript中使用它。我只是在本地環境中嘗試過你的代碼,但是在遠程服務器中它卻沒有。在本地,我的所有網頁都在UI文件夾中,所以baseUrl =/UI /在遠程服務器中,因爲我將UI設置爲網站路徑,baseUrl = /,我嘗試調用的AjaxPage在UI/AjaxPage下文件夾,我不明白爲什麼它不能在遠程服務器上工作。 $ .post(rootPath +「AjaxPages/UserStatus.aspx」....)任何想法? –

+0

您是否嘗試過提醒或記錄'rootPath +「AjaxPages/UserStatus.aspx」'以確保其有效的網址? – Loktar

+0

rootPath +「AjaxPages/UserStatus.aspx」=/AjaxPages/UserStatus.aspx,這是正確的,但ajax不起作用。如果它在本地運行,rootPath +「AjaxPages/UserStatus.aspx」=/UI/AjaxPages/UserStatus.aspx,但是,在遠程服務器中,根是UI文件夾。任何想法? –