サーバーコントロールの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メソッドを記述する必要がありました。
protected void Page_Init(object sender, EventArgs e) { ' GridView1にメタモデルをバインドする DynamicDataManager1.RegisterControl(GridView1, true); }
この記載がASP.NET 4では、マークアップで記述できるようになりました。
<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データフィールドの表示](http://cz-cdn.shoeisha.jp/static/images/article/4853/ManytoMany1.gif)
まとめ
前回今回と、主にクライアントサイドとサーバーサイドに分けてASP.NET 4の新機能を軽く紹介しましたが、確実にASP.NETは、パフォーマンスがよく高機能なWebアプリケーションを構築しやすい環境が整ってきていることを感じられたのではないかと思います。
あくまで鳥瞰レベルにとどめたため、物足りなさを感じた読者の方も多いかと思いますが、正式リリース後に細かな部分にフォーカスを当てて新機能を紹介していく予定です。