ASP.NET RepeaterコントロールバインドList汎用の書き方

1230 ワード

我々は,アーキテクチャ化されたWebアプリケーションを開発する際に,データベース内のレコードをリストに入れることが多く,良好なパッケージングを実現した.ビジネスロジックを呼び出すプログラム猿も、ライブラリテーブル構造を知る必要がなく、「Model.プロパティ」を直接使用して各フィールドのデータにアクセスできます。しかし、表示をするとき、初心者はいくつかの問題にぶつかるかもしれません。従来、表示コントロール(Repeaterなど)にバインドされていたのはDataSetで、ASPXページには「<%#Eval("フィールド名")%>」と書かれています。では、リスト汎用型をどのようにバインドしますか?


実際、Repeaterコントロールはビジネス・オブジェクトへのバインドをサポートしており、Eveal式も使用しません.例を見てみましょう
バックグラウンドコード:
GeekStudio.BLL.Blog optBlog = new GeekStudio.BLL.Blog();
Repeater1.DataSource = optBlog.GetModelList();
Repeater1.DataBind();

ここで、GetModelList()は、Listを返します.従来のバインドDataSetと同様にリストをRepeaterコントロールにバインドできます.
フロントコードを見てみましょう.
<%#((GeekStudio.ORM.Model.Blog)Container.DataItem).Title%>
こうして簡単にORM.Model.BlogのTitleがWebページに表示されました
まとめてみます.
RepeaterにList汎用をバインドするには、バックグラウンドコードにRepeaterコントロールを指定するだけです.DataSource=List<あなたのタイプ>です.フロントコードではまずタイプを強制的に変換してから、各属性にアクセスできます.Eveal:<%#((あなたのタイプ)Containerを書く必要はありません.DataItem).あなたのタイプのプロパティ%>.ライブラリテーブルの構造を知る必要がなく、Modelタイプを直接呼び出すことができるという利点が明らかになった.プロパティは、コードを書き間違えにくく、メンテナンス性も向上します.また,この方法の効率は従来のEvalバインド法よりも高いと言われている.