2011-10-14 47 views
1

我已經在我的網站下面的HTML:在asp.net中轉義內嵌代碼塊?

<meta name="keywords" content="<%=Keywords%>"/> 
<meta name="description" content="<%=Description%>"/> 

這是在我的網站母版頁。在後面的代碼母版頁,我有這樣的:

private String _description = "A default description for my site"; 
    public String Description 
    { 
     get { return _description; } 
     set { _description = value; } 
    } 

    private String _keywords = "my Site my Company keywords "; 
    public String Keywords 
    { 
     get {return _keywords; } 
     set { _keywords = value; } 
    } 

的想法是,所有在我的網站上的網頁都會有一個默認描述/關鍵字,除非我需要將它們設置爲一個特定別的東西頁面(使用Master.Description = "whatever")。

但是,我遇到了一些麻煩:內嵌代碼塊delcarations的左括號在生成的HTML中被轉義,所以代碼塊不起作用。下面是生成的html對我的網頁的摘錄:

<meta name="keywords" content="&lt;%=Keywords%>" /><meta name="description" content="&lt;%=Description%>" /> 

我已經習慣了使用C#,但我新的asp.net,我不能制定出正確的語法來得到這個正常工作。我需要做什麼才能讓內聯代碼塊正常工作?

回答

1

運行你的控制服務器端,有賦值:

<meta name="keywords" id="keywords" runat="server" /> 
    <meta name="description" id="desc" runat="server" /> 

    keywords.Attributes("content") = Keywords; 
    desc.Attributes("content") = Description; 
+0

+1,我不得不同意這是該使用母版頁是困難的最好辦法 –

+0

,作爲子頁面可以」不要看關鍵字和描述元素。通過母版頁上的屬性來排查這些元素的所有變化可讓我輕鬆地設置前綴/後綴。 – Oliver

+0

您可以將代碼放在主頁面代碼後面。文件後面的主頁面代碼將能夠讀取與您的主頁面標記文件相同的對象 – Curt

0

使用簡單/單綁定表達式。

<meta name="keywords" content="<%# Keywords%>"/> 
<meta name="description" content="<%# Description%>"/> 

問題的DataBind()方法在後臺代碼:

if(!IsPostBack) 
    DataBind();