体験 ASP.NET MVC2

先日mvcConf @:Japan 〜 ASP.NET MVCブートキャンプに参加させて頂きました。
http://www.atmarkit.co.jp/fdotnet/chushin/mvcconfreport_01/mvcconfreport_01_01.html

そんな時ちょうど社内の簡単な検索サイト構築話があったので、
いい機会だと思い、ASP.NET MVC2と戯れてみました。

作ったのはこんなサイト

・社内ポータルからログイン
・検索キーが1つだけのメチャシンプルな検索&表形式の結果
・結果の各行からpdfのダウンロード

初めてだったので当然元ネタというか、サンプルコードが欲しいですね。
ぴったりの記事が見つかったので、今回は基本的にまるパクリで作りました。
http://netreth.seesaa.net/article/150150741.html

すばらしいですね。もう僕のやりたいこと全てがここに書いてありました。

それでもハマったこと

やっぱり実際に作ってみると、いろいろハマるものですね。
僕的にハマりぽいんとは↓な感じでした。

htmlAttributesの設定

今回僕が見つけられたインターネット上のサンプル達はとにかくC#で書かれていた。
残念ながら僕はVBしか出来ないかつ脳内変換も出来ないので、
結構苦戦するところがありました。
特にこのhtmlAttributesの書き方は目からウロコ(+ +)

C#だと

<%=Html.ActionLink("リンク", _
                   "actionName", _
                   "controllerName", _
                   null, _
                   new { class = "hogeClass", id="hogeId" }) %>

VBだと

<%= Html.ActionLink("リンク", _
                    "actionName", _
                    "controllerName", _
                    nothing, _
                    new with { .class="hogeClass", .id="hogeId" }) %>

このnew with { .class="hogeClass", .id="hogeId" })の書き方知らなくて、
いちいちハッシュに詰め込んでから渡してみたり。。。
この書き方は「匿名型」と言うそうで、いちいちハッシュに入れるよりは大分すっきり書けました。

Ajaxを使う時のJavascriptのパス

【正解】

    <%-- Microsoft AJAX --%>
    <script src="./Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>
    <script src="./Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>

でも、↑だとVS2008上ではスクリプトファイルが見つかりませんのエラーが出る。
でもデバッグ実行はしっかり動く。

【不正解】最初はこっちで書いてた;;

    <%-- Microsoft AJAX --%>
    <script src="/Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>
    <script src="/Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>

VS2008上ではエラー無し、デバッグ実行もOK!!
でもIISに配置するとパスが通らない;;

よくわかりませんでしたが、動くから【正解】パターンでエラーはシカトしました。

IIS5 or IIS6 への配置

キタコレ。
せっかく作ってさぁ出来ました的テンションで、デプロイに苦戦するともう萎えちゃいますね。
まず、下記の記事は必読。
http://msdn.microsoft.com/ja-jp/asp.net/ff652616
で今回僕は「リスト 4 - Global.asax (Root ルートに変更後)」を選択。

ワイルドカード スクリプト マップを追加
【IIS5】の場合
プロパティ>>構成>>追加>>アプリケーションの拡張子マッピングの追加/編集
実行ファイル:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
拡張子:.*
ファイルの存在を確認する。のチェックは必ず外す。

で、さらにどこかのサイトで「system.web.mvc」を配布すると幸せになれる。
と読んだので、一応ローカルコピーをtrueにしました。

終わりに

苦戦もしましたけど、ASP.NET MVC楽しかったです。
また機会があればチャレンジしたいなぁ