ASP.NET MVC 4プロジェクトを(よせばいいのに)”基本”なテンプレートで作ってしまった後にknockout.jsを使いたくなった時のメモ。

Visual studio 2010です。(新しのほしい。)

knockout.jsをインストール

[ツール]-[NuGetパッケージマネジャ]-[ソリューションのNuGetパッケージ管理]

“knockout mvc”で検索して、”K”なアイコンのそれっぽいパッケージをインストールします。

なんか色々入りますな。

ビルドできない

とりあえずビルドしてみますが、こんな警告が出てビルドがすんなりいきません。

1
ASP.NET のランタイム エラーです: ファイルまたはアセンブリ 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)

パケージをアップデートしてみます。

1
PM> Update-Package –reinstall Newtonsoft.Json

何度かリビルドしたら解決しました。

なんだったんだ?

jQueryのダウングレード

悲しいことにIE8を未だ捨てられないので、泣きながらダウングレード。

1.9.x系にします。

1
2
3
4
5
6
PM> Uninstall-Package kMVC  #依存関係があるらしいので先にアンインストール
PM> Uninstall-Package jQuery
PM> Install-Package jQuery -Version 1.9.1
PM> Install-Package kMVC -Version 0.5.4 #このパッケージは無くても良いかもな~
PM> Install-Package jQuery.Validation #HtmlHelper.EnableClientValidationで必要な気がする
PM> Install-Package Microsoft.jQuery.Unobtrusive.Validation #EnableUnobtrusiveJavaScriptで要るかも

Viewの変更

viewにスクリプトへの参照を追加します。

1
2
<script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/knockout-3.1.0.js")" type="text/javascript"></script>

ASP.NET MVCにはbundling機能ってのがあって、こちらも使えるみたいなんですが、難しそうなんで後回し。

App_Start\BundleConfig.csをうまいこと編集するみたいです。

ASP.NET MVCでのJavaScriptライブラリ

今回NuGetを使ってJavaScriptライブラリをインストールしてみましたが、

ふつーにjsファイルをプロジェクトに追加しても行けると思われます。

NuGetだと依存関係とか考えてくれるけど、要らん物が入ることも在るんで良し悪しですな。

ちなみに、以前AngularJS使おうかと思ったけど、Knockout.jsに乗り換えました。

なぜならMicrosoftがVisualStudioのテンプレートで採用しているようなので、

MS系で開発するならこれかなと思った次第です。

長いものには巻かれましょう。