ASP.NET MVC 3 のここが素晴らしい! その1
ASP.NET MVC 3 は、インテリセンスが効かないというのはさておき、そのを補って余りある優れた特徴があります。
まあ、何といっても新しいレンダリングエンジンRazor ですが、まあ、それは、どこにも書いているので、そちらに譲るとしまして・・・。
次というか、それを差し置いても素晴らしい点は、
WebGridがHelperメソッドに加わった
ことでしょう。
私もASP.NET MVC はお気に入りで、いわゆるスキャフォールドとかはほんと便利なのですが、取得したデータの一覧を作るとき、
Pager を自分で書くのがめんどい・・・
というのだけが悩みの種でした。まあ、Pagerくらい書けばいいのですが、これがまた、スキャフォールドが便利な分、そのギャップで、めんどくささが倍増という状態でした。
が、なんと、MVC 3ではこれがそこそこ解決されています。取得したデータをWebGridにマップしてやるだけで、Pager 付、グリッド表示できるのです。
どんな感じかと言いますと、
まず、View。
これは、VSにて標準で生成されるプロジェクトのHome->IndexにWebGrid ヘルパーを利用するためのコードを加えたものです。
@{
View.Title = "Home Page";
}
@model IEnumerable<MvcGridHelperTest.Models.仕入先>
@{
var grid = new WebGrid(source:Model);
}
<h2>@View.Message</h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
@grid.GetHtml()
データモデルは、SQL Server のデモデータでおなじみのNorthwindJを利用し、仕入先テーブルを取り込んだものを利用しています(変なテーブル使うなって?)。書いた部分は、基本的に赤字のところ。青字のところは、環境に依存するので、適宜変更。
で、Controllerの方は、こんな感じ、
public class HomeController : Controller
{
//Entities のインスタンスを生成
NorthwindJEntities ne = new NorthwindJEntities();
public ActionResult Index()
{
ViewModel.Message = "Welcome to ASP.NET MVC!";
//Entitiesからデータを取得
var query = from p in ne.仕入先
select p;
//Viewに渡す
return View(query);
}
public ActionResult About()
{
return View();
}
}
ただ、データを返してるだけ(ラムダ式使えって?)。
これで、
こんな結果が得られます。素晴らしい。CSSも細かくいじれるので、実戦配備でも問題ありません。デフォルトでは、10行でページングされていますが、Viewの記述を
@{
var grid = new WebGrid(source:Model,rowsPerPage:3);
}
と変更(追加)すると、簡単に行数を変更できます。
このほか、ソートとかもいじれます。
すごい。というか、便利。