体験 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楽しかったです。
また機会があればチャレンジしたいなぁ