Asp.Netのフロントバインドの一般的な概要

18730 ワード

1、<%=変数名%>には、バックグラウンド定義の変数名が入っています.
<div>  

    <p> <%= DateTime.Now.ToString() %></p> 

</div>

出力結果:2015-03-09 11:20:082、<%#%>データのバインド(注意:データバインドコントロールでのみ使用でき、サーバコントロールでのみ使用できます)
このフォーマットはaspです.Netでは、コントロールデータバインドの構文であり、そのコントロールのDataBind()メソッドを呼び出す必要があります(またはページ全体Page.DataBind()つまり、得られたコントロールに対してDataBind()メソッドを呼び出す必要があります).
例:<%#DataBinder.(Container.DataItem,"ClassName")%>フルインスタンスコード:
<asp:DataList ID="ClassList" runat="server"> 

    <ItemTemplate> 
<%# DataBinder.(Container.DataItem, "ClassName") %> </ItemTemplate> </asp:DataList>

(1)<%#Eval("データ列")%>主に変更が必要なデータ列に使用
例えば、<%#Eval("性別")%>=1を必要とします.1を女に変える.
まずCSファイルでメソッドを定義します.
/// <summary>         

///              

/// </summary>                

public object ChangeSex(object obj)         

{             

    if (obj.ToString() == "0")             

    {                 return " ";             }            

     else             

    {                 return " ";             }         

}

すると、<%#ChangeSex(Eval(「性別」)%>出力は「女」
これらの共通の変換方法をすべて1つの共通クラスファイルに配置して呼び出すことができます.呼び出し方法は次のとおりです.
<%#ネーミングルーム.公共類名メソッド名("列")%>
 <%# Common.ChangeSex(Eval(「性別」)%>
タイムカットも可能です
例えば1:<%#Eval("StartTime","{0:yyyy-MM-dd}")%>
または2:<%#Convert.ToDateTime(Eval("StartTime").ToString()).ToString("yyyy-MM-dd")%>
(2)<%#Bind("データ列")%>
GridViewでは、処理を必要としないデータ列バインディングによく見られます.
(3)EvalとBindの違い
[1]バインド式<%#Eval("フィールド名")%><%#Bind("フィールド名")%>
1).evalは読み取り専用データでbindは更新可能である.
2).フォーマット操作が必要な式を操作する場合は、<%#Eval("フィールド名")のようなEvalを使用する必要がある.ToString().Trim() %>
3).GridViewのバインド列にコンテンツフォーマットDataFormateString={0:d}を設定する場合は、属性HtmlCodeをfalseに設定する必要があります.そうしないと機能しません.
4).Eval一方向バインド:データは読み取り専用です.Bind双方向バインディング:データは変更することができて、そしてサーバーの端に戻って、サーバーは変更後のデータを処理することができて、例えばデータベースに保存します.
[2]詳細
eval()メソッドは、実行時に反射を用いる後期バインド計算を実行するため、標準のASP.NETデータバインド方式bindに比べて性能が著しく低下する.バインド時に文字列をフォーマットする必要がある場合に一般的に使用されます.多くの場合、このメソッドEvalメソッドは、データフィールドの値をパラメータとして文字列として返す静的(読み取り専用)メソッドです.
Bindメソッドは、データバインドコントロールの値を取得し、変更をデータベースにコミットする読み取り/書き込み機能をサポートします.
EvalメソッドEvalメソッドを使用して、GridView、DetailsView、FormViewコントロールなどのデータバインディングコントロールのテンプレートにおける後期バインディングデータ式を計算します.実行時、EvealメソッドはDataBinderオブジェクトのEvealメソッドを呼び出し、名前付きコンテナの現在のデータ項目を参照します.名前付きコンテナは、通常、GridViewコントロールの行など、完全なレコードを含むデータバインドコントロールの最小構成要素です.このため、Evalメソッドは、データバインドコントロールのテンプレート内のバインドにのみ使用できます.Evalメソッドは、データ・フィールドの名前をパラメータとし、データ・ソースの現在のレコードからフィールド値を含む文字列を返します.2番目のパラメータを指定して、文字列を返すフォーマットを指定できます.このパラメータはオプションです.文字列フォーマットパラメータはStringクラスのFormatメソッドに定義された構文を使用します.
Bind法を用いたBind法はEval法といくつか類似点があるが,大きな相違もある.EvalメソッドのようにBindメソッドを使用してデータバインドフィールドの値を取得できますが、データを変更できる場合はBindメソッドを使用します.ASP.NETでは、GridView、DetailsView、FormViewなどのデータバインドコントロールで、データソースコントロールの更新、削除、挿入操作を自動的に使用できます.たとえば、SQL Select、Insert、Delete、Update文がデータ・ソース・コントロールに定義されている場合、GridView、DetailsView、またはFormViewコントロール・テンプレートのBindメソッドを使用すると、テンプレートのサブコントロールから値を抽出し、これらの値をデータ・ソース・コントロールに渡すことができます.データ・ソース・コントロールは、適切なデータベース・コマンドを実行します.このため、データバインドコントロールのEditItemTemplateまたはInsertItemTemplateでBind関数を使用します.Bindメソッドは、通常、編集モードのGridView行によって表示されるTextBoxコントロールなどの入力コントロールとともに使用される.この方法では、データバインドコントロールがこれらの入力コントロールを自己レンダリングの一部として作成すると、入力値を抽出できます.  
Bindメソッドは、次の例に示すように、データフィールドの名前をパラメータとして使用し、バインド属性に関連付けます.
<EditItemTemplate> 

   <table> 

     <tr> 

       <td align=right> 

         <b>Employee ID:</b> 

       </td> 

       <td> 

         <%# Eval("EmployeeID") %> 

       </td> 

     </tr> 

     <tr> 

       <td align=right> 

         <b>First Name:</b> 

       </td> 

       <td> 

         <asp:TextBox ID="EditFirstNameTextBox" RunAt="Server" 

           Text='<%# Bind("FirstName") %>' /> 

       </td> 

     </tr> 

     <tr> 

       <td align=right> 

         <b>Last Name:</b> 

       </td> 

       <td> 

         <asp:TextBox ID="EditLastNameTextBox" RunAt="Server" 

             Text='<%# Bind("LastName") %>'  /> 

       </td> 

     </tr> 

     <tr> 

       <td colspan="2"> 

         <asp:LinkButton ID="UpdateButton" RunAt="server" 

           Text="Update" CommandName="Update" /> 

           

         <asp:LinkButton ID="CancelUpdateButton" RunAt="server" 

           Text="Cancel" CommandName="Cancel" /> 

       </td> 

     </tr> 

   </table> 

</EditItemTemplate>

行のUpdateボタンをクリックすると、Bind構文でバインドされた各コントロール属性値が抽出され、データソースコントロールに渡されて更新操作が実行されます.
DataBinderを使用します.Eval  ASP.NETはDataBinderという名前を提供しています.後期バインドのデータバインド式を計算し、結果を文字列にフォーマットするEvalの静的メソッド(オプション).この方法により、値を必要なデータ型に強制する際に実行しなければならない明示的な強制変換操作を回避できます.
たとえば、次のコードクリップでは、整数が通貨文字列として表示されます.標準のASPを使用する.NETデータバインディング構文では、データフィールドIntegerValueを取得するために、まずデータ行のタイプを強制的に変換する必要があります.そして、これをパラメータとしてStringに渡す.Formatメソッド:
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> 
この構文をDataBinder.Evalの構文を比較すると、データ・アイテムの名前付きコンテナ、データ・フィールド名、フォーマット文字列の3つのパラメータしかありません.テンプレート化リスト(DataListクラス、DataGridクラスまたはRepeaterクラスなど)では、ネーミングコンテナは常にContainerである.DataItem.
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
フォーマット文字列パラメータはオプションです.無視されたらDataBinderEvalは、次の例に示すように、タイプオブジェクトの値を返します.
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>
テンプレート化リストのコントロールをデータバインドする場合、DataBinder.Evalは、通常、データ行とデータフィールドを強制的に変換する必要があるため、特に有用である.
[3].その他
Eval:読み取り専用データの表示をバインドします.Bind:読み取り専用データをバインドしたり、更新データをバインドしたりすることができます.Bindメソッドは、GridViewなどのデータコントロールのUpdate、Insert、Deleteなどのメソッドがこのようなつながりを使用して対応する処理を行うことができるように、フィールドとコントロールのバインド属性を関連付けます.
EvalとBindでバインドされたデータは<%#%>に表示され、表示するデータを変更または操作する場合は<%#%>にも表示されます.たとえば、次のようになります.
1)表示された文字列を文字で表示する:<%#(Eveal(「Address」)ToString().SubString(0,10)%>は、10桁のアドレスを表示します.
2)表示された情報を判断する:<%#(Eval("if_delete").ToString == "yes"?「削除済」:「削除されていません」%>
3、<%@%>は、引用が多い.aspxページには、次のコードが表示されます.
<%@ Page Language="C#"   CodeFile="Default.aspx.cs" Inherits="_Default" %>

4、<%関数%>中間一般放関数または方法、典型的なaspプログラム書き方.例:
<tr bgcolor="#ffffff"> 

    <td height="20"> 

        <div align="center">  </div> 

    </td> 

    <td height="9">  

        <% getTypeList(); %> 

    </td> 

</tr>

<script type="text/javascript">
function getTypeList(){}
</
script>