2016-06-07 61 views
1

我已經插入如下一個web.config鍵:C#變量加載標籤的.aspx

<add key="WebInstance" value="/testApp"/> 

當我打電話給我的Site.Master

<link rel="stylesheet" href="<%= WebInstance%>/themes/bs3/css/bootstrap.min.css" /> 

在我Site.Master.cs

private string _webInstance = ConfigurationManager.AppSettings["WebInstance"] 

public string WebInstance { get { return _webInstance ; }} 

Site.Master中的第一個引用完美地工作。例如:

<link rel="stylesheet" href="/testApp/themes/bs3/css/bootstrap.min.css" /> 

但在其他頁面中,它引用了完整標籤。

舉例來說,當我在瀏覽器功能做inspect element,我看到我的<head></head>標籤是這些:

<link rel="stylesheet" href="<%= WebInstance %>/themes/bs3/css/bootstrap.min.css" /> 

我也有拿到鑰匙在我ascx.cs

的功能

爲什麼只是調用標籤而不是獲得真正的價值?

UPDATE

的Site.Master和 '其他' 的網頁是2分不同的東西,在WebInstance關鍵是要從web.config文件。

在Site.Master.cs中我有自己的函數調用密鑰,其他頁面也有各自的函數來調用密鑰。

Please take a look at the attached image for better understanding.

再次更新

我已經找到了答案,這一切,我對我的<Head></Head>其他頁面標籤有runat="server",刪除它解決了這個問題。無論如何;)

+0

'Site.Master'不是一個頁面,它是一個母版頁,你不能自己打開它。你能解釋一下你的意思嗎?「Site.Master中的第一個引用完美地工作。」? – Andrei

+0

我的意思是,那些從Site繼承的頁面。Master能夠基於密鑰正確引用樣式頁面,但對於其他一些頁面,當我做同樣的事情時,它會將'<%= WebInstance%>'顯示爲物理路徑,而不是將其轉換爲密鑰我想要。 – NewbieCoder

+0

這些其他頁面和工作正常的頁面有什麼不同? – Andrei

回答

1

您的其他網頁不能直接在其母版頁中引用代碼隱藏。 您可以將相同的屬性添加到您的單個頁面,但會重複。
雖然我不是靜態類的大風扇,在這種情況下,它可能是很好的妥協:

public static class SiteSettings 
{ 
    public string WebInstance 
    { 
     get { return ConfigurationManager.AppSettings["WebInstance"];}} 
    } 
} 

然後在.aspx,參考SiteSettings.WebInstance

一些開發人員將製作一個基頁,其他頁面繼承並在其中放置通用屬性。這可以工作,但我會用它作爲最後的手段。遲早你會想要一些基本頁面的行爲,而不是其他的,或者你必須對網站進行一些廣泛的改變,這會變成一個很大的痛苦。