オルタナティブ・ブログ > ビジネスをデザインするブログ >

事業開発ほどクリエイティブな行為は他に無いと思いこんでいる人間の日常

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();
        }
    }

ただ、データを返してるだけ(ラムダ式使えって?)。

これで、

Webgird

こんな結果が得られます。素晴らしい。CSSも細かくいじれるので、実戦配備でも問題ありません。デフォルトでは、10行でページングされていますが、Viewの記述を

@{
  var grid = new WebGrid(source:Model,rowsPerPage:3);
}

と変更(追加)すると、簡単に行数を変更できます。

Webgird2

このほか、ソートとかもいじれます。

すごい。というか、便利。

Comment(0)