[MSDNから転送]Asp.Net Webページの組み込みコード
3912 ワード
ASPにコードを追加する.NETページのデフォルトモデルでは、コード非表示クラスファイル(コード非表示ページ)を作成するか、runat=「server」プロパティを持つscriptブロック(単一ファイルページ)にページのコードを書きます.作成されたコードは、通常、ページ上のコントロールとインタラクティブになります.たとえば、コードからコントロールのText(または他の)プロパティを設定することで、ページに情報を表示できます.
もう1つは、埋め込みコードブロックを使用してページにコードを直接埋め込むことです.
埋め込みコードブロック
埋め込みコードブロックは、ページの表示中に実行されるサーバコードです.ブロック内のコードは、プログラミング文を実行し、現在のページクラスの関数を呼び出すことができます.
以下のコード例は、埋め込みコードブロックを含むASPを示す.NETページ、このコードブロックにループ結果が表示されます.
次のコード例では、span要素内の共通GetTime()関数の値を示す埋め込みコードブロックを示します.埋め込みコードブロックでは、構文<%=expression%>を使用して式を解析し、その値をブロックに返します.
埋め込みコードブロックは、ページのデフォルト言語で記述する必要があります.たとえば、ページの@ Page命令に属性language="VB"が含まれている場合、ページはrunat="server"と表示されているすべてのスクリプトブロックのコード、および<%>セパレータのすべての埋め込みコードをVisual Basicコンパイラを使用してコンパイルします.
埋め込みコードブロックの使用
ASP.NET Webページでは組み込みコードブロックがサポートされており、主に古いASPテクノロジーとの後方互換性を維持するために使用されています.一般的に、組み込みコードブロックを複雑なプログラミングロジックに使用するのは、ページ内のコードとタグが混在している場合、デバッグとメンテナンスが困難であるため、最善の方法ではありません.さらに、コードは、ページの提示中にのみ実行されるため、バックグラウンドコードまたはスクリプトブロックコードを実行するために適切なページ処理フェーズにコードを配置するよりも柔軟性が大幅に低下する.
埋め込みコードブロックの一部の用途は次のとおりです.は、前述の例に示すように、コントロール要素またはタグ要素の値を関数が返す値に設定する. は、計算をタグまたはコントロール属性に直接埋め込む.
もう1つの組み込みコードはデータバインド時です
データバインド式の構文
すべてのデータバインド式は、<%#と%>文字の間に含める必要があります.
ASP.NETは、サーバコントロール属性とデータソース間のバインドを作成する階層型データバインドモデルをサポートします.ほとんどのサーバコントロール属性は、ページまたはサーバコントロールを含む直接名前付きコンテナに存在する任意の共通フィールドまたは属性にバインドできます.
データバインド式は、EvalメソッドとBindメソッドを使用してコントロールにデータをバインドし、変更をデータベースにコミットします.Evalメソッドは、データフィールドの値をパラメータとし、文字列として返す静的(読み取り専用)メソッドです.Bindメソッドは、データバインドコントロールの値を取得し、変更をデータベースにコミットする読み取り/書き込み機能をサポートします.
XPathメソッドとXPathSelectメソッド、およびXPathBinderクラスを使用してXmlDataSourceコントロールからXMLデータにバインドできます.詳細については、XmlDataSourceWebサーバコントロールを参照してください.
集合:'runat="server">
式:<%#expression%>
方法結果:<%#GetBalance(custID)%>
DataBinder.Eval()メソッド:
Asp.net1.0使用法:
<%# DataBinder.Eval(Container.DataItem,”fieldName”,”{0:c}”) %>
DataBinder.Evalパラメータ1-データ項目の命名コンテナ2-データフィールド名3-フォーマット文字列
Asp.net2.0使用法:<%#Eval("fieldName","{0:c}")%>
Xmlデータソースのバインド<%#xpath("fieldName")%>
<%# XPath("shipaddress/address1") %>
注意:データバインディングの変数は、csコードファイルで必ずPublicで公有変数として宣言されている場合、バインディング式では使用できません.最後に必ずページでhisを呼び出します.DataBind()バインディングを有効にする
もう1つは、埋め込みコードブロックを使用してページにコードを直接埋め込むことです.
埋め込みコードブロック
埋め込みコードブロックは、ページの表示中に実行されるサーバコードです.ブロック内のコードは、プログラミング文を実行し、現在のページクラスの関数を呼び出すことができます.
以下のコード例は、埋め込みコードブロックを含むASPを示す.NETページ、このコードブロックにループ結果が表示されます.
<%@ Page Language="C#" %>
<html> <body>
<form id="form1" runat="server">
<% for(int i = 0; i < 6; i++) %>
<% { Response.Write("<br>" + i.ToString()); }%>
</form>
</body>
</html>
次のコード例では、span要素内の共通GetTime()関数の値を示す埋め込みコードブロックを示します.埋め込みコードブロックでは、構文<%=expression%>を使用して式を解析し、その値をブロックに返します.
<%@ Page Language="C#" %>
<script runat=server>
protected String GetTime()
{ return DateTime.Now.ToString("t"); }
</script>
<html>
<body>
<form id="form1" runat="server"> Current server time is <% =GetTime()%>.
</form>
</body>
</html>
埋め込みコードブロックは、ページのデフォルト言語で記述する必要があります.たとえば、ページの@ Page命令に属性language="VB"が含まれている場合、ページはrunat="server"と表示されているすべてのスクリプトブロックのコード、および<%>セパレータのすべての埋め込みコードをVisual Basicコンパイラを使用してコンパイルします.
埋め込みコードブロックの使用
ASP.NET Webページでは組み込みコードブロックがサポートされており、主に古いASPテクノロジーとの後方互換性を維持するために使用されています.一般的に、組み込みコードブロックを複雑なプログラミングロジックに使用するのは、ページ内のコードとタグが混在している場合、デバッグとメンテナンスが困難であるため、最善の方法ではありません.さらに、コードは、ページの提示中にのみ実行されるため、バックグラウンドコードまたはスクリプトブロックコードを実行するために適切なページ処理フェーズにコードを配置するよりも柔軟性が大幅に低下する.
埋め込みコードブロックの一部の用途は次のとおりです.
もう1つの組み込みコードはデータバインド時です
データバインド式の構文
すべてのデータバインド式は、<%#と%>文字の間に含める必要があります.
ASP.NETは、サーバコントロール属性とデータソース間のバインドを作成する階層型データバインドモデルをサポートします.ほとんどのサーバコントロール属性は、ページまたはサーバコントロールを含む直接名前付きコンテナに存在する任意の共通フィールドまたは属性にバインドできます.
データバインド式は、EvalメソッドとBindメソッドを使用してコントロールにデータをバインドし、変更をデータベースにコミットします.Evalメソッドは、データフィールドの値をパラメータとし、文字列として返す静的(読み取り専用)メソッドです.Bindメソッドは、データバインドコントロールの値を取得し、変更をデータベースにコミットする読み取り/書き込み機能をサポートします.
XPathメソッドとXPathSelectメソッド、およびXPathBinderクラスを使用してXmlDataSourceコントロールからXMLデータにバインドできます.詳細については、XmlDataSourceWebサーバコントロールを参照してください.
集合:
式:<%#expression%>
方法結果:<%#GetBalance(custID)%>
DataBinder.Eval()メソッド:
Asp.net1.0使用法:
<%# DataBinder.Eval(Container.DataItem,”fieldName”,”{0:c}”) %>
DataBinder.Evalパラメータ1-データ項目の命名コンテナ2-データフィールド名3-フォーマット文字列
Asp.net2.0使用法:<%#Eval("fieldName","{0:c}")%>
Xmlデータソースのバインド<%#xpath("fieldName")%>
<%# XPath("shipaddress/address1") %>
注意:データバインディングの変数は、csコードファイルで必ずPublicで公有変数として宣言されている場合、バインディング式では使用できません.最後に必ずページでhisを呼び出します.DataBind()バインディングを有効にする