UIの日本語化
生成されたコードのaspx内の画面タイトル、リンク、ボタンなどを手作業で日本語に修正します(リスト9)。
<asp:Content runat="server" ID="Content2" ContentPlaceHolderID="MainContent"> <h2>会議室リスト</h2> <p> <asp:HyperLink runat="server" NavigateUrl="Insert" Text="新規作成" /> </p> <div> <asp:ListView runat="server" DataKeyNames="Id" ItemType="MRRS_Scaffolding.Models.MeetingRoom" AutoGenerateColumns="false" AllowPaging="true" AllowSorting="true" SelectMethod="GetData"> <EmptyDataTemplate> 会議室データはありません。 </EmptyDataTemplate> <LayoutTemplate> <table> <thead> <tr> <th>会議室名</th> <th>場所</th> <th> </th> </tr> </thead> ... </LayoutTemplate> <ItemTemplate> ... <asp:HyperLink runat="server" NavigateUrl='<%# FriendlyUrl.Href("~/Views/MeetingRoom/Edit", Item.Id) %>' Text="編集" /> ... </ItemTemplate> </asp:ListView> </div> </asp:Content>
以上でカスタマイズは終わりです。実行してみると、場所IDに対応した名前が表示され、編集画面ではドロップダウンリストで入力できるようになります。また、タイトルなどが日本語で表示されます(図5)。
まとめ
今回は、前回Scaffoldingを使って生成したコードの解説とそのカスタマイズ方法を学びました。まとめると次のようになります。
-
生成されたテーブルはデータモデル定義に沿って生成される
- テーブル名はデータモデル名の複数形
- 主キーはIdフィールド
-
画面はASP.NET DynamicData、およびモデルバインド、モデル検証を利用している
- DynamicEntityコントロールにより、フィールドに対応した表示、入力コントロールが実行時に生成される
-
ナビゲーションはFriendly URLsを利用している
- URLルーティングに面倒な設定が不要になる
- 「セグメント」を使い、データの受け渡しを行う
-
項目のカスタマイズを行うには、フィールドテンプレートを使う。
- 適用したいフィールドテンプレートの(テンプレート名).ascx(.cs)、(テンプレート名)_Edit.ascx(.cs)ファイルを作成する
- フィールドテンプレートの名前を、データモデルの該当フィールドに、UIHint属性で指定する
- 画面のタイトルなどは、aspxファイルを直接編集する
さて、全7回に渡ってお送りした本連載も今回で最後になります。
Webフォームは歴史のあるプラットフォームであり、昨今では古臭く使いにくいという意見もよく耳にします。しかし、積み上げてきた資産は膨大ですし、ASP.NET 4.5で追加されたさまざまな新機能を使うことで、用途を絞ればまだまだ非常に強力なプラットフォームであると言えるでしょう。また、Visual Studio 2013で搭載された「One ASP.NET」により、ほかのテクノロジーと併用することも容易になりました。
ぜひ、ASP.NET Webフォームも毛嫌いせずに新機能を試し、評価して、活かせるべきところは活かし、不得意なところは他のテクノロジーを合わせて使うなど、自分なりのベストプラクティスを模索していってください。本連載があなたにとって、今後少しでもASP.NET Webフォームを活用していくお役に立てば幸いです。