ダウンロード サンプルファイル (2.1 MB)
既存プロジェクトに組み込む~MVC編~
前項と基本的に同じ作業なので、差分のみ記載します。
ファイル単位での名前空間記載など、細かな修正を実施
DLLと名前空間追加後に、MVCプロジェクトのDefault.aspxとの競合を避けるためにDynamic DataのDefault.aspxをリネームします(本稿では、dynamic.aspxとします)。その後、dynamic.aspx.csファイルを、以下の太字部分のように修正します。
using ASP.NET MVC アプリケーションの名前空間;
protected void Page_Load(object sender, EventArgs e)
{
// System.Collections.IList visibleTables = Global.DefaultModel.VisibleTables;
// ↑既定のコード ↓修正コード
System.Collections.IList visibleTables = MvcApplication.DefaultModel.VisibleTables;
Dynamic Dataプロジェクトの設定のままではMVCプロジェクト側のGlobal.asax.csファイルが参照できません。そのため、MVCプロジェクト側の名前空間を追加し、Global.asax.csファイル内のクラス名を変更しています。具体的に言うと、Dynamic DataプロジェクトではGlobalクラスでしたが、MVCプロジェクトではMvcApplicationクラスのためその修正です。
続いて、Global.asaxファイルの追記作業を実施します。
using DDincludeMvc.Models;
using System.Web.DynamicData;
namespace MVCプロジェクトの名前空間
{
// メモ: IIS6 または IIS7 のクラシック モードの詳細については、
// http://go.microsoft.com/?LinkId=9394801 を参照してください
public class MvcApplication : System.Web.HttpApplication
{
private static MetaModel s_defaultModel = new MetaModel();
public static MetaModel DefaultModel
{
get
{
return s_defaultModel;
}
}
public static void RegisterRoutes(RouteCollection routes)
{
DefaultModel.RegisterContext(typeof(登録するEDM名), new ContextConfiguration() { ScaffoldAllTables = true });
// Dynamic Data用URLルーティング
routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
{
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = DefaultModel
});
// MVCアプリ用URLルーティング
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Dynamic Dataプロジェクト、MVCプロジェクト共にGlobal.asax.csファイルにURLルーティングを登録しています。Dynamic Dataプロジェクトはさらに、データモデルの登録や、スキャフォールディング機能の有効化なども設定しています。そのため、プロジェクトを統合するには、それぞれのプロジェクトを競合させないようにGlobal.asax.csファイルの記載をまとめる必要があります。
上記コードでは、Dynamic Dataプロジェクト側のURLルーティングの登録と、データモデルの登録並びに、スキャフォールディング機能の有効化をMVCプロジェクトの前に記載しています。RegisterRoutesメソッドはHTTPリクエストが発生した際に上から順にルーティングルールを実行します。そのため、MVCアプリケーションよりも先にDynamic Dataアプリケーションの記載が必要になります。
以上で設定完了です。作業完了すると、図5のようになります。

実行すると実行直後はMVC アプリケーションに、dynamic.aspx(Dynamic Dataの旧Default.aspx)のURLを入力すれば、Dynamic Dataアプリケーションに遷移します。ここから、CSSの調整並びに統合などが発生しますが、そちらは必要に応じて実施してください。
まとめ
今回はWeb FormでDynamic Dataを有効化する方法と、実プロジェクトへの組み込みについてご紹介しました。
Web Formでも容易にData Annotationを利用する方法はすぐにでも既存のWeb Formアプリケーションに適用できるのではないでしょうか。
また、それだけでは不足する場合や、MVCアプリケーションの場合にDynamic Dataの組み込みもご紹介できたため、少なからず実プロジェクトへの組み込みに対する偏見などに対しても実施しやすいと感じて頂けたのであれば幸いです。
次回はDynamic Dataにおけるフィールドテンプレートと属性のカスタマイズについてご紹介する予定です。お楽しみに。
参考文献
この記事は参考になりましたか?
既に会員の方はを行ってください。
- ASP.NET Dynamic Data活用編連載記事一覧
-
- ASP.NET Dynamic Dataのエンティティテンプレートのカスタマイズと勘所
- ASP.NET Dynamic Dataのフィールドテンプレートのカスタマイズと検証機能
- ASP.NET Dynamic Dataを既存のアプリケーションへ組み込もう
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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プロジェクト ナオキ(ナオキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
