SHOEISHA iD

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

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

ASP.NET 4 Beta入門

サーバーサイドの開発改善に注目!
~VS2010+ASP.NET 4新機能(後編)~

ASP.NET 4 Beta入門(2)


  • X ポスト
  • このエントリーをはてなブックマークに追加

サーバーコントロールのHTMLレンダリングの見直し

 既存のコントロールも新たな機能拡張が行われています。ASP.NET 3.5までサーバーコントロールはTableタグを多用する傾向にありました。複雑にレンダリングされることで、CSSも適用しづらく、JavaScriptなどによる開発も煩雑でした。

 ASP.NET 4限定ですが、いくつかのサーバーコントロールのHTMLレンダリングが再考され、クリーンなHTMLを生成するようになりました。

レンダリングが見直されたサーバーコントロール
コントロール名 プロパティ名 概要
Menu RenderingMode(新規追加プロパティ) 既定値がTableタグからul/liタグに変更(Tableタグも選択可能)
CheckBoxList RepeatLayout(従来のプロパティに設定値を追加) 従来の設定(Table/Flow)の他に、UnorderedList/OrderedListも追加(ul/liと、ol/liによるレンダリング)
RadioButtonList RepeatLayout(従来のプロパティに設定値を追加) 従来の設定(Table/Flow)の他に、UnorderedList/OrderedListも追加
FormView RenderOuterTable(新規追加プロパティ) ItemTemplate内で記述した要素や文字をTableタグで囲むかどうかを設定
Login RenderOuterTable(新規追加プロパティ) Loginコントロールが生成するHTMLをTableタグで囲むかどうかを設定
PasswordRecovery RenderOuterTable(新規追加プロパティ) PasswordRecoveryコントロールが生成するHTMLをTableタグで囲むかどうかを設定
ChangePassword RenderOuterTable(新規追加プロパティ) ChangePasswordコントロールが生成するHTMLをTableタグで囲むかどうかを設定

 Menuコントロールは用途から考えるとシンプルにul/liタグなどで表示できるようになりました。しかし、過去のアプリケーションとの互換性も考慮し設定を変更することで、CSSなどの修正ポイントを削減することもできます。

 FormView/Login/PasswordRecovery/ChangePasswordコントロールは、ASP.NET 3.5 SP1まではTableタグ内にTableタグによるレンダリングを行っていました。ASP.NET 4では、RenderOuterTableプロパティをFalseに設定することで、2重でTableタグを使用していた設定を解除できます。

 また、CheckBoxList/RadioButtonListコントロールは、RepeatLayoutプロパティに設定値を追加し、ul/liタグ、ol/liタグによるレンダリングも選択できるようになりました。

 このようにASP.NET 4では、クリーンなHTMLをレンダリングを選択できるようになりました。CSSを適用しやすい設定を選択できるのは開発者にとっても嬉しい部分なので積極的に活用しましょう。

ASP.NET Dynamic Dataの新機能

 ASP.NET 3.5 SP1で登場したDynamic Dataアプリケーションですが、ASP.NET 4では、多数の変更点とプロジェクトの構成その物の見直しが行われています。しかし、開発者が利用する上では3.5 SP1で培った知識がそのまま活用できる作りになっています。

ASP.NET 3.5 SP1のDynamic Dataからの強化点

 初登場から初めてのバージョンアップということで多数の改善が為されています。以下に、特に注目ポイントの高い新機能をピックアップしました。

  • DynamicDataManagerコントロールのマークアップ記述の拡張
  • 多対多フィールドテンプレート

DynamicDataManagerコントロールのマークアップ記述の拡張

 3.5 SP1の段階では、HTMLビュー上でただ宣言するだけのDynamicDataManagerコントロールですが、Dynamic Dataの振る舞いをデータコントロールに持たせるためには、該当ページのコードビハインド上でRegisterControlメソッドを記述する必要がありました。

RegisterControlメソッドの記述例
        protected void Page_Init(object sender, EventArgs e)
        {
            ' GridView1にメタモデルをバインドする
            DynamicDataManager1.RegisterControl(GridView1, true);
        }

 この記載がASP.NET 4では、マークアップで記述できるようになりました。

DynamicDataManagerコントロールの記載例
    <asp:DynamicDataManager ID="DynamicDataManager1" runat="server" AutoLoadForeignKeys="true">
        <DataControls>
            <asp:DataControlReference ControlID="GridView1" />
        </DataControls>
    </asp:DynamicDataManager>

 上記の場合、GridViewに対してDynamic Dataの振る舞いが実装されます。この変更により、コードビハインドのUIコントロールなどへの依存をできるだけ少なくできる他、Web Form上でDynamic Dataの機能を利用したい時の設定の煩雑さをaspx側にまとめてしまうというメリットも出てきます。

多対多フィールドテンプレート

 ASP.NET 3.5 SP1でもADO.NET Entity Frameworkを使用してDynamic Dataアプリケーションは構築できましたが、ASP.NET 4ではEntity Frameworkが持つ特色の1つ、「Dynamic Data エンティティ Web アプリケーション」でのみ、多対多を活かしたデータフィールドが登場しました。それぞれ特徴は次のとおりです。

多対多データフィールドの概要
データフィールド名 概要
ManyToMany.ascx 項目の分だけハイパーリンクが表示(図10)
ManyToMany_Edit.ascx 複数項目が選択できるチェックボックスリストが表示(図11)
図10 ManyToMany.ascxデータフィールドの表示
図11 ManyToMany_Edit.ascxデータフィールドの表示
図11 ManyToMany_Edit.ascxデータフィールドの表示
図10 ManyToMany.ascxデータフィールドの表示

まとめ

 前回今回と、主にクライアントサイドとサーバーサイドに分けてASP.NET 4の新機能を軽く紹介しましたが、確実にASP.NETは、パフォーマンスがよく高機能なWebアプリケーションを構築しやすい環境が整ってきていることを感じられたのではないかと思います。

 あくまで鳥瞰レベルにとどめたため、物足りなさを感じた読者の方も多いかと思いますが、正式リリース後に細かな部分にフォーカスを当てて新機能を紹介していく予定です。

参考文献

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET 4 Beta入門連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4853 2010/02/19 11:52

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング