2011-12-04 10 views
0

TestStringはなぜ私のラベルに出力しようとすると空ですか? PageBaseから派生し、マスターページを使用するすべてのasp.netページasp.net databind labelページのベースクラスのプロパティにテキストを制御します。

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

EDIT

以下のコードは、実際に動作-Iはしないだけではないだけでなく、それをテストしました。どのような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 %>" /> 

< この

%の#だけでコードを実行されますが、doesnの変更する必要があると思います't 出力何か。 <%=これらのタグの中にあるものはすべて出力します。

+1

=タグに変更すると、 "これはスクリプトレットではありません。プレーンテキストとして出力 "し、テキストとして出力します。 – 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

関連する問題