2009-07-18 17 views
5

...このモデルに、プログラムなど、コントロールを作成し、それらにデータを結合と比較してASP.Netで宣言型メソッドとプログラム型メソッドを使用するメリットとデメリットは何ですか?

<asp:GridView Id="grdEmployees" runat="server" DataSourceID="objEmployees"> 
    ... 
</asp:GridView> 

を使用することのメリット/デメリットは何ですか?

それぞれの方法でどちらを使用する必要がありますか?

答えて

0

UIの状態は、それが表すビジネスプロセスにのみ影響する必要があります。したがって、ビジネスモデルの変更に合わせてUIが自動的に更新されるようにする必要があります。 UIを手動でプログラミングしている場合は、ビジネスモデルの状態が正確に反映されない場合があります。 UIをプログラミングすることにより、宣言的にこの懸念の大半が取り除かれます。可能であれば、宣言的な方法を使用してください。

2

これは間違いありません - あなたが達成しようとしていることに依存します。あなたのレイアウトが(列の固定数ですなわちグリッド)を変更することができませんを知っているとき

あなたは安全に、または任意の将来の可能な変更は、静的な性質であると思われる静的コントロールを使用することができます(グリッド内の新しい列)。このアプローチは、実際の平均的なケースでは完全に上手く、明らかに高速です。

あなたがコントロールを生成に必要次いで柔軟性が必要な場合、プログラム(すなわち、あなたはグリッドの可変数を生成するために必要 - または任意の他のコントロール)。柔軟性を持たせるためには、実行時まで知ることができない変数値をレイアウトに考慮する必要があります。

1

両方のモデルの用途がありますが、読むのが簡単で、ロジックコードからビューコードを分離するのに役立ちますので、aspxページでマークアップを使用する傾向があります。プログラムでコントロールを作成し、それらにデータをバインドする場所は、動的なコントロールが必要なときです。ユーザーの検索基準のために動的にドロップダウンのセットを生成しているときに良い例があるかもしれない - 私はこのような何かをするだろう:心に留めておくべき

SqlDataReader dr; 

// Set up database connection and set dr to search query. 

while(dr.Read()) 
{ 
    Literal name = new Literal(); 
    name.Text = dr["Name"] + ": "; 

    Page.Controls.Add(name); 

    DropDownList ddl = new DropDownList(); 
    ddl.ID = "Search_" + dr["ID"]; 

    SqlDataReader dr2; 

    // Set up database connection and set dr2 to search items query. 

    while(dr2.Read()) 
    { 
     ListItem li = new ListItem(dr2["Name"], dr2["Value"]); 
     ddl.Item.Add(li); 
    } 

    Page.Controls.Add(ddl); 
} 

もうひとつは、あなたがマークアップのコントロールを作成することができますですあなたのaspxページを作成し、それらをコードビハインドに埋め込んだカスタムDataSetsにバインドします。

関連する問題