ASP.net MVC HTML5 Helpers Toolkit
ナオキさんに勧められたので調べてみました。
ナオキにASP.NET(仮) : MVC HTML5 Toolkit が CodePlex にて公開!
まずは、上記サイトからソースとAssemblyをダウンロードしてみました。名前空間がSystem.Web.Mvc.Html5というところがムフフなポイントですね。
ソースがあまりにもシンプルで短いので見てみるのをお勧めします。で、見てみてサンプルを動かしてみました。
面白いね~。3大派手機能のうちVideo/Audioのタグには対応。あとはCanvasも同じように作ればいいね!
ベースとなるHtml5TextBoxとHtml5RangeNumberはModelStateを取り出してないから、値がバインドしてこないです。ちょっと残念。InputHelperを使ってるHtml5TextBoxForHelperはViewData.ModelState.TryGetValueでちゃんとバインドしてるから、いろいろ試しながら作ってるのか、意図的にバインドしないようにしてる感じです。input type="range"もバインドしてくれていいと思うけどな~。せっかくhtmlHelper.GetModelStateValueも用意してるんだし。
サンプルのMVCプロジェクトではSite.MasterでDOCTYPE htmlの出力じゃないけど、そんなの気にせずSafari,Chromeはちゃんとレンダリングしてくれるのがすばらしい。
Dean Hume - ASP.net MVC HTML5 Toolkit
ちなみにMVC2用だとうたってますが、そんなの気にせずMVC 3 Preview1で使ってみましょう。作者のサイトに書かれてる通り、参照設定に追加して、Global.asaxにおまじない。
もちろんRazorなので、NamespaceをWebPageからHtmlHelperへの拡張メソッドが参照できるように、Global.asaxに以下のように追記。
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); CodeGeneratorSettings.AddGlobalImport("System.Web.Mvc.Html5"); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); }
ページに直接usingとして書いてもいいですが、すべてのページに書くのは馬鹿らしいじゃないですか。Tumblrにも書いたと思いますが、Preview1ではWeb.configのsystem.web/pages/namespacesはみてくれないです。そこはRTMまでには解決されることでしょう。
前回作ったサルベージ用アプリに追加してみる。
@using(Html.BeginForm("Index","Home",FormMethod.Get)) { @Html.TextBox("q") <input type="submit" value="検索" /> @Html.Html5Range(1, 100 , 0, 23, null).AsHtml() }
AsHtml拡張メソッドもがある前提です。
対応してるChromeだと↓こんな感じでちゃんとRangeコントローラが出てきます。
Firefoxだとまだ対応してないので、type属性無視してTextboxがそのまま表示されます。
お手軽でとてもいいじゃないですか!これは楽しい!
あと、個人的に面白いと思うのが↓。
aspnet - Release: Sprite and Image Optimization Framework
地味な感じがするけど、ASP.NETらしさ爆発じゃないですかね~。