ASP.NET MVC 3 RAZOR リクエストURLによってCSS指定

2012/03/28
「/Controllers/」内で関数とか作ってやれば良いんだけど、そんな大仰なものでもないので別案。
レイアウトページでラムダ式とかいうヤツを使う。

さんぷる

やりたいことは下記のような内容。

各ページに存在するメニュー。
表示されているページと同じメニュー項目を別CSSにしたい。

たとえば、メニュー項目に「top」「about」があるとする。
「top」が表示されてるときはメニュー項目「top」を別CSS、「about」が表示されてるときはメニュー項目「about」を別CSSにしたい。

デリゲートとかラムダ式とか言われているみたいけどよくは分からない。とりあえず下記のような感じ。

レイアウトページ

  1. @{
  2.   Func<string, string> BoldLink = (action) =>
  3.   {
  4.     var requestAction = this.ViewContext.Controller.ControllerContext.RouteData.Values["action"] as string;
  5.     
  6.     string myStyleBold = "";
  7.     if (action == requestAction)
  8.     {
  9.       myStyleBold = "font-weight:bold;";
  10.     }
  11.     
  12.     return myStyleBold;
  13.   };
  14. }
  15.  
  16. <a href="@Href("/Home/Index/")" style="@BoldLink("Index")">Index</a>
  17. <a href="@Href("/Home/About/")" style="@BoldLink("About")">About</a>
  18. <a href="@Href("/Home/Other/")" style="@BoldLink("Other")">other</a>

※リクエストURLが「/Home/Index/」だったら4行目で「requestAction」に「Index」が代入される。
※4行目の「Values["action"]」の「action」を「controller」にすればリクエストURL(/Home/Index/)の「Home」が取得できる。

めも

「Func<string, string>]」は最初の「string」は返り値の型。二つ目の「string」は引数の型。引数が2つ以上あるならカンマ区切りで増やしていく。
「BoldLink」は関数名。
「(action)」は引数。
他の「=」や「=>」とかはそういうモノ。意味はあるかもしれないけど、知らない。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい