喜帳面の日記

50歳越えおやじのASP.NET MVC への挑戦日記です。

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押してリロードした結果を確認すること。これ短気な私は忘れがちです。