2012-03-24 8 views
0

aspxページのクラスのフィールドに直接アクセスする方法はありますか?私が追加したaspxページではASP.NET式:クラスのプロパティへのアクセス

私はこれを試してみました

<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.DataBind()Page_Load()に電話していますか?

埋め込みコードブロックに#データバインディング演算子を使用しています。コントロールにバインドする値は、コントロールまたはページのいずれかからDataBind()を呼び出した後にのみ表示されます(ページの各コントロールに対して呼び出されます)。

値をその単一のラベルコントロールにバインドする場合は、jym.DataBind()を呼び出すことができます。

ただし、Labelコントロールにはわかりやすい名前(id)を使用することをお勧めします。そのため、データバインドされていることをコードで明確にしています。

詳細は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コンポーネントを使用していません。私はそのページから私有財産にアクセスしようとしています。 –

+0

@TapasBose更新 – Robbie

+0

ありがとうございます。値をプロパティに設定した後、 'this.DataBind();'を呼び出す必要があります。 ''またはJavaScriptの '$(document) 'で簡単にアクセスできます。準備完了(function(){ アラート( '<%# Test %>'); }); ' –

-2

<%= this.Test%>を使用します。 this.jym.Text = Testも行うことができます。ページ・ロードevt。

+0

' Robbie

+0

:$を..返信用 – marspzb

関連する問題