ダウンロード サンプルファイル (184.2 KB)
CRUD処理関連付け
最後に作成したCRUD処理メソッドをデータバインドコントロールに関連付けます(リスト5)。これにはCRUD処理それぞれに対応するSelect/Insert/Update/DelteMethodプロパティに、関連付けるコードビハインドのメソッド名を指定するだけです。それ以外はデータソースコントロールを用いた時と変わりません。
<asp:FormView ID="ReservationsFormView" runat="server" DefaultMode="Edit" DataKeyNames="ReservationId,Version" ItemType="MRRS.Entity.Reservation" SelectMethod="SelectReservation" UpdateMethod="UpdateReservation" DeleteMethod="DeleteReservation" ViewStateMode="Enabled">
以上でモデルバインドを使う準備は完了です。実行してみて予約情報の更新、削除処理が問題なく行われること、また重なりデータエラー、同時実行エラーが画面に表示されることを確認してみてください。
非モデルバインドとモデルバインドの使い分け
モデルバインドを今回紹介してきましたが、非モデルバインドが非推奨となったわけではありません。前述のとおり、すべてモデルバインドに統一するというのもコード量などの問題があり、現実的とは言えません。適材適所で使い分けるのがよいでしょう。
では、どういった基準で使い分けを行えばよいのでしょうか。その基準を考えるため、非モデルバインド、モデルバインドそれぞれの特徴を表2にまとめます。
| 非モデルバインド | モデルバインド | |
|---|---|---|
| 処理の見通し |
処理前後のイベントハンドラーと データソースコントロールで指定した型の メソッドに処理が分散するため、 見通しは悪い |
1つのアクションに対応した処理は 1つのメソッドにまとまるため、 見通しが良い |
|
コードビハインドの コード量 |
少ない(場合によっては不要) | 多い |
| モデルへの値の手動設定 | 型安全でない | 型安全 |
|
検索処理にバインド できるデータ元 |
ほぼ同じ | |
以上の特徴から、私なりに考えた使い分けの基準は「単純な検索処理のみなら非モデルバインド、ある程度複雑な更新処理が絡むならモデルバインドを使う」です。サンプル内の具体的な例で言えば、ドロップダウンリストの項目など絞り込み条件がないか単純なものは非モデルバインド、ビジネスデータの更新処理はモデルバインドを使う、です。
ただ、Webフォームでのモデルバインドはまだ登場したばかりなので、まだ評価が十分とはいえませんし、今後のバージョンアップで改善される点もあるでしょう。読者の皆さんには、ぜひ実際にいろいろと試してみて、自分が抱えている問題の解決に役立つかどうかを含めて評価を下してほしいと思います。また、こんな良い使い方がある、などがあれば、ぜひ教えてください。
まとめ
今回はASP.NET 4.5の新機能のうち、もっとも大きな目玉である「モデルバインド」について解説しました。今回のポイントは次のとおりです。
-
従来のデータソースコントロール、データバインドコントロールを用いた非モデルバインドでは、1つのアクションに対応する処理の記述が分散されてしまう
- しかも業務エラーを例外として扱う必要がある
-
モデルバインドを使うことでいわゆるCRUD処理それぞれに対応したメソッドにまとめて処理を記載できる
- 業務エラーを戻り値として扱うことができる
-
モデルバインドを使うには以下の手順が必要
-
CRUD処理に対応したメソッドをコードビハインドに定義する
- 検索処理の引数にはQueryString属性などを使い、値の設定元を指定できる
- データバインドコントロールのSelect/Insert/Update/DeleteMethodプロパティに、コードビハインドに定義したCRUDメソッド名を指定する
-
CRUD処理に対応したメソッドをコードビハインドに定義する
-
非モデルビハインドとモデルバインドは次の基準で使い分ける
- 非モデルバインド:引数が少ない単純な検索処理のみの場合
- モデルバインド:ある程度複雑な更新処理も行う場合
さて、次回はモデルバインドとセットで使う「モデル検証」について紹介します。お楽しみに。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- 実例で学ぶASP.NET 4.5 Webフォーム 新機能活用法連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 高野 将(タカノ ショウ)
<個人紹介>新潟県長岡市在住の在宅リモートワークプログラマー。家事や育児、仕事の合間に長岡IT開発者勉強会(NDS)、Niigata.NET、TDDBCなどのコミュニティに関わったり、Web記事や書籍などの執筆を行ったりしている。著書に『アプリを作ろう! Visual C#入門 Visual C# 2017対応』(日経BP社、2017)など。< WINGSプロジェクト について>有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での 登録メンバ は約50名で、現在も執筆メンバを 募集中 。興味のある方は、どしどし応募頂きたい。 著書 、 記事 多数。 RSS X: @WingsPro_info (公式)、 @WingsPro_info/wings (メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
