Visual Studio Express 2012 for Web でいってみる 6.ささいなことですが
asp.net MVC4 でちょっとしたメモを2つ。
ActionLinkの引数をViewBagを使った変数にしたいとき
@Html.ActionLink("ホーム", "Index", "Home")の引数部分を定数じゃなくて可変にしたい。
ASP.NET MVC 4 Mobile Features
http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-4-mobile-features
ではこんな例が記載されています。
@model IEnumerable<string> @{ ViewBag.Title = "All speakers"; } <ul data-role="listview"> @foreach(var speaker in Model) { <li>@Html.ActionLink(speaker, "SessionsBySpeaker", new { speaker })</li> } </ul>
この例にもあるように定数だけではなく「変数」も使えるはず。そこでお手軽に「ViewBag」を使おうとして
@Html.ActionLink(@ViewBag.hoge ,@ViewBag.hoge2 ,@ViewBag.hoge3 )
というふうに書くと赤い波線がでてエラーになってしまいますね。
「はてな、ViewBagはだめ?」かというと
@Html.ActionLink( (string)@ViewBag.hoge , (string)@ViewBag.hoge2 , (string)@ViewBag.hoge3 )
こんなふうに、(string)つかって明示的に文字列にしてあげればOKですね。
前述のサイト「ASP.NET MVC 4 Mobile Features」にもこんな例がありました。
@Html.ActionLink(date.ToString("h:mm tt"), "SessionsByDate", new { date });
デバッグでは表示される背景画像が本番環境では表示されない
些細なことですが、また「あれ~?」と悩んだ。2度目なのでメモしておきます。
CSSで、ある要素に背景画像を設定しています。デバッグではちゃんと表示されるのに、本番環境に「発行」して動かしてみると画像が表示されない。
×:background-image: url(/Content/MyContent/Myimg1.png);
○:background-image: url(../Content/MyContent/Myimg1.png);
違いは[ .. ]です。×の記述でもデバッグ時は画像が表示されますが、本番環境では表示されませんでした。
あと、大事なこと。すぐあきらめない。必ずF5押してリロードした結果を確認すること。これ短気な私は忘れがちです。