2011-06-30 10 views
0

私は本当に簡単な方法でこの質問をする方法を知らなかった。<%= PerformSomeFunction()%>ここで何が起こっていますか?

ページに複数の場所でクライアント名を表示する必要があり、同時に表示されるとは限りません。

私が元々持っていた解決策は、3つのラベルコントロール(uxClientName1、uxClientName2、uxClientName3)でした。私がそれらを必要としたときに私のコードに埋め込んでいました。

uxClientName1 = CurrentClient.ClientName 

私は次の解決策を使用することをお勧めしました。私はそれを必要な場所私はこれを持っているでしょう後ろに私のページでは、私は私がしたい正確に何やっているので、これは素晴らしいです

Protected Function DisplayClientName() As String 

    Return CurrentClient.ClientName 

End Function 

... ...

<%=DisplayClientName()%> 

と私のコードでこれを持っています繰り返しコードはありませんが、どのように動作するのか、まさに何が起こっているのかは分かりません。

説明はありますか?

EDIT:ページが提供されている場合、このページ上の私のクライアントのプロパティです...

Private Property CurrentClient() As Client 
    Get 
     If ViewState("CurrentClient") Is Nothing Then 
      ' No such value in view state, take appropriate action. 
      ViewState("CurrentClient") = New Client 
      Return CType(ViewState("CurrentClient"), Client) 
     Else 
      Return CType(ViewState("CurrentClient"), Client) 
     End If 
    End Get 
    Set(ByVal value As Client) 
     ViewState("CurrentClient") = value 
    End Set 
End Property 
+0

古典的なASPは、すべてそれがすべての仕事をしている方法thats – Jodrell

答えて

0

これらはembedded code blocksです。

埋め込みコードブロックは、ページのデフォルト言語で と記述する必要があります。ページの@ページ ディレクティブは属性 言語=「VB」が含まれている場合 たとえば、ページが にrunat =「サーバー」と任意のインでマークされた任意のスクリプトブロック内のコード をコンパイルする のVisual Basicコンパイラを使用します <%>デリミタのラインコードです。

埋め込みコードブロックは、 でサポートされています。 のASP.NET Webページは、以前のASPテクノロジ との下位互換性を維持しています。一般に、 複合語の埋め込みコードブロックを使用しているプログラミングロジックは の練習には最適ではありません。コードが でマークアップと混在していると、デバッグやメンテナンスが難しくなります。ページ 処理の適切な段階にあなたのコード のスコープ内のコードビハインドまたは スクリプトブロックコードよりも実質的に少ない 柔軟性を持って また、コードは、だけで、ページのレンダリングフェーズの間に が実行されるため。

埋め込みコードブロックのためのいくつかの用途:

  • マークアップに直接計算を埋め込む機能
  • によって返された値に制御またはマークアップ要素の値を設定またはプロパティを制御します。

ここにはlist of all inline ASP.NET tagsがあります。

+0

ありがとう。だから、この種の機能に適したものは何でしょうか。 3つのラベルを付けて別々の場所に配置するのは間違いありません。 – Westicle

+0

あなたはそれをうまくやっているなら、それを使用してください。埋め込まれたコードブロックを使用することは一般的に悪いことではありませんが、しばしばより良い方法があるかもしれません。 'CurrentClient'とは何ですか? –

+0

CurrentClientは、作成したクライアントクラスのインスタンスです。 – Westicle

0

、ASP.NETがしようとすると呼んでその機能を、そしてそれはへの戻り値を書き込みますでしょう応答ストリーム。

これだけ

一度

<%= func() %> 
が起こるかは、あなたがページを評価する際に

0

<%=DisplayClientName()%><%Response.Write(DisplayClientName())%>の省略形ですサーバー側でコールfunc()を意味します。応答からの返り値を応答に書き込むだけです。

0

<%%>の間のコードがサーバー側で実行されます。 =記号は、メソッドの結果がページに出力されることを意味します。したがって、ページの<%=DisplayClientName()%>は、戻り値DisplayClientに置き換えられます。

関連する問題