2012-03-24 54 views
0

有什麼方法可以直接訪問aspx頁中的類的字段?ASP.NET表達式:訪問類的屬性

我已經試過這樣:

在aspx頁面我已經加入:

<form id="LoginForm" runat="server">  
    <asp:Label Text='<%# Eval("Test") %>' runat="server" ID="jym" /> 
</form>   

,並在後端類本頁面我已經聲明的屬性爲:

private string test; 
public string Test { 
    get { 
     return test; 
    } 
    set { 
     test = value; 
    } 
} 

此屬性在Page_Load()中初始化爲:Test = "JYM";

但問題是我無法在瀏覽器中看到這個值。標記呈現爲<span/>,但沒有任何內容。

我做錯了什麼?

回答

2

你在撥打在Page_Load()

您在嵌入式代碼塊中使用了#數據綁定運算符。只有在控件或頁面調用DataBind()後,纔會顯示您綁定到控件的值(這將調用頁面上的每個控件)。

如果您只想將值綁定到該單個標籤控件,則可以調用jym.DataBind()

但是,我會建議使用更具描述性的名稱(id)作爲Label控件,以便在代碼中更清楚地瞭解什麼是數據綁定。

有關更多詳細信息,請參見this page

UPDATE(額外的信息中評論的要求OP)

所以,你有3種選擇:

1. 調用DataBind()如上建議。

2. 請勿對標籤使用服務器端控件。只需使用普通的HTML,然後你可以使用下面的語法:

<p><%= Test %></p> 

3. 設置標籤的代碼背後的價值。例如,在你的頁面加載,你可能有以下幾點:

protected void Page_Load(object sender, EventArgs e) 
{ 
    jym.Text = Test; 
} 
+0

感謝您的答覆。是的,我沒有使用任何數據綁定或任何可迭代的ASP組件。我只是願意從頁面訪問私人財產。 – 2012-03-24 20:46:42

+0

@TapasBose更新 – Robbie 2012-03-24 20:57:35

+0

謝謝。在將值設置爲屬性後,我需要調用'this.DataBind();'。我可以簡單地通過''或者以JavaScript的形式訪問它:'$(document)。就緒(功能(){ 警報('<%# Test %>'); });' – 2012-03-24 20:59:22

-2

您可能想要使用<%= this.Test%>。你也可以做this.jym.Text = Test;在頁面載入中。

+0

像' Robbie 2012-03-24 20:38:17

+0

你是對的:$ .. – marspzb 2012-03-24 20:46:53