2011-12-04 36 views
0

爲什麼TestString總是空的,當我試圖將其輸出到我的標籤?asp.net databind標籤控件文本到頁面基類的屬性

基類的所有asp.net頁面,從PageBase派生,並使用一個母版頁

public class PageBase : System.Web.UI.Page 
{ 
    protected string TestString { get; set; } 
} 

protected override void OnPreInit(EventArgs e) 
{ 
TestString = "test string"; 
} 

asp.net頁面。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:Label ID="lblContent" runat="server" Text="<%# this.TestString %>" /> 
</asp:Content> 
+0

假設您在代碼中設置了TestString而不顯示,是否安全? –

+0

已更新代碼以顯示正在設置的TestString :) – user1231231412

回答

1

編輯

下面的代碼不實際工作,我測試了,只是沒有得到很好的。什麼OP真的要買的是:

<div id="lblContent"><%= this.TestString %></div> 

我認爲你需要這個

<asp:Label ID="lblContent" runat="server" Text="<%# this.TestString %>" /> 

改變這種

<asp:Label ID="lblContent" runat="server" Text="<%= this.TestString %>" /> 

<%#剛剛運行的代碼,但沒有按't 輸出什麼。 <%=將輸出這些標籤內的任何內容。

+1

如果將其更改爲=標記,我會收到消息「This is not scriptlet。will be以純文本格式輸出「,並以文本形式輸出。 – user1231231412

+1

看起來您必須在後面的代碼中設置標籤的Text屬性,或者將標籤放在標籤中並在其中放置常規div標籤,並在中間放置<%=。 –

+0

呼叫良好。只需刪除Label控件並直接寫入即可。 – user1231231412

2

您需要撥打DataBind()方法。

在Page_Load中處理,

TestString="Testing a property"; 
lblContent.DataBind(); 
//or 
DataBind(); 
+0

我無法從PageBase類調用lblContent。 我也試過 ((Label)this.FindControl(「lblContent」)).Text =「TEST」; – user1231231412

+0

@JonC - 你可以調用頁面/父控件的DataBind()方法。 – adatapost

+0

我寧願避免這種情況,因爲我必須在每個頁面上都這麼做,這就是爲什麼我想抽象到基類 – user1231231412

相關問題