SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

実例で学ぶASP.NET 4.5 Webフォーム 新機能活用法

ASP.NET 4.5の「モデルバインド」を活用する

実例で学ぶASP.NET 4.5 Webフォーム 新機能活用法 第3回

CRUD処理関連付け

 最後に作成したCRUD処理メソッドをデータバインドコントロールに関連付けます(リスト5)。これにはCRUD処理それぞれに対応するSelect/Insert/Update/DelteMethodプロパティに、関連付けるコードビハインドのメソッド名を指定するだけです。それ以外はデータソースコントロールを用いた時と変わりません。

リスト5 予約情報詳細画面とCRUS処理処理の関連付け(ReservationsDetail.aspxより)
<asp:FormView ID="ReservationsFormView" runat="server"
  DefaultMode="Edit" DataKeyNames="ReservationId,Version"
  ItemType="MRRS.Entity.Reservation" SelectMethod="SelectReservation"   UpdateMethod="UpdateReservation" DeleteMethod="DeleteReservation"
  ViewStateMode="Enabled">

 以上でモデルバインドを使う準備は完了です。実行してみて予約情報の更新、削除処理が問題なく行われること、また重なりデータエラー、同時実行エラーが画面に表示されることを確認してみてください。

非モデルバインドとモデルバインドの使い分け

 モデルバインドを今回紹介してきましたが、非モデルバインドが非推奨となったわけではありません。前述のとおり、すべてモデルバインドに統一するというのもコード量などの問題があり、現実的とは言えません。適材適所で使い分けるのがよいでしょう。

 では、どういった基準で使い分けを行えばよいのでしょうか。その基準を考えるため、非モデルバインド、モデルバインドそれぞれの特徴を表2にまとめます。

表2:非モデルバインドとモデルバインドの比較
  非モデルバインド モデルバインド
処理の見通し 処理前後のイベントハンドラーと
データソースコントロールで指定した型の
メソッドに処理が分散するため、
見通しは悪い
1つのアクションに対応した処理は
1つのメソッドにまとまるため、
見通しが良い
コードビハインドの
コード量
少ない(場合によっては不要) 多い
モデルへの値の手動設定 型安全でない 型安全
検索処理にバインド
できるデータ元
ほぼ同じ

 以上の特徴から、私なりに考えた使い分けの基準は「単純な検索処理のみなら非モデルバインド、ある程度複雑な更新処理が絡むならモデルバインドを使う」です。サンプル内の具体的な例で言えば、ドロップダウンリストの項目など絞り込み条件がないか単純なものは非モデルバインド、ビジネスデータの更新処理はモデルバインドを使う、です。

 ただ、Webフォームでのモデルバインドはまだ登場したばかりなので、まだ評価が十分とはいえませんし、今後のバージョンアップで改善される点もあるでしょう。読者の皆さんには、ぜひ実際にいろいろと試してみて、自分が抱えている問題の解決に役立つかどうかを含めて評価を下してほしいと思います。また、こんな良い使い方がある、などがあれば、ぜひ教えてください。

まとめ

 今回はASP.NET 4.5の新機能のうち、もっとも大きな目玉である「モデルバインド」について解説しました。今回のポイントは次のとおりです。

  • 従来のデータソースコントロール、データバインドコントロールを用いた非モデルバインドでは、1つのアクションに対応する処理の記述が分散されてしまう
    • しかも業務エラーを例外として扱う必要がある
  • モデルバインドを使うことでいわゆるCRUD処理それぞれに対応したメソッドにまとめて処理を記載できる
    • 業務エラーを戻り値として扱うことができる
  • モデルバインドを使うには以下の手順が必要
    • CRUD処理に対応したメソッドをコードビハインドに定義する
      • 検索処理の引数にはQueryString属性などを使い、値の設定元を指定できる
    • データバインドコントロールのSelect/Insert/Update/DeleteMethodプロパティに、コードビハインドに定義した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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7311 2013/08/21 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー