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フォームを活用していくお役に立てば幸いです。
