ASP.NET MVCでJavaScriptを使う際のTips
2017/12/01
アプリケーションのルートパスをJavaScriptに渡す
テスト環境と本番環境ではインストール先が異なり、サーバーにアップしたらajax用に記述しているApiのURLが見つからずに動かない、ということがないように。<script> var baseUrl = "@Url.Content("~")"; </script>RazorのView(.cshtml)側で上記のように記述しておけば、外部参照している.jsファイルからでもbaseUrlを参照できます。
コントローラからJavaScriptに直接モデルを渡す
Controller
あまりよい例ではありませんが、こちらのモデルを流用。public ActionResult Index() { DDLViewModel model = new DDLViewModel("001", "003"); return View(model); }
View
@section scripts{ <script> var data = @Html.Raw(Json.Encode(Model)); </script> }
実行後のHTMLソース
<script> var data = {"SelectCategoryId":"001","SelectGoodsId":"003","CategoryList":[{"Disabled":false,"Group":null,"Selected":false,"Text":"野菜","Value":"002"},{"Disabled":false,"Group":null,"Selected":false,"Text":"果物","Value":"001"}],"GoodsList":[{"Disabled":false,"Group":null,"Selected":false,"Text":"みかん","Value":"001"},{"Disabled":false,"Group":null,"Selected":false,"Text":"バナナ","Value":"002"},{"Disabled":false,"Group":null,"Selected":false,"Text":"いちご","Value":"003"},{"Disabled":false,"Group":null,"Selected":false,"Text":"りんご","Value":"004"},{"Disabled":false,"Group":null,"Selected":false,"Text":"ブドウ","Value":"005"}]}; </script>