<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MVC 下導航高亮的一種解決方案

      前言

      導航高亮一直是一個讓大家頭疼的問題。

      純 Javascript 的話可以判斷當前頁面的地址和鏈接地址是否有關系。

      這樣的弊端就是自由度太低,MVC 下會出一定的問題 (MVC 下有默認的 Controller 和 Action)

      另一種方案是前端后端結合,為每一張頁面設置一個屬性,然后在頁面中判斷。滿足條件便高亮。

      這樣的弊端就是,需要為你所有的頁面設置屬性,非常麻煩!

      那么有沒有什么完美的解決方案?一勞永逸的?

      神奇的 eval 函數

      Javascript 有精粹也有糟粕,其中的 eval 是大多數動態語言都擁有的精髓。我們是否可以利用這個函數呢?

      基本思路:

      給每一個 li(對應一個鏈接)設置一個 class,例如 class=”controller_Home”,

      代表著,只要這張頁面是的 controller 是 Home,就讓這個鏈接高亮。

      而在頁面中,是可以通過代碼直接得到 controller 和 action 的名稱的,沒必要為每一張頁面單獨手動設置。

      解決方案

      <ul id="top-navigation">
      <li class="controller_Home"><span><span>@Html.ActionLink("首頁","Index","Home")</span></span></li>
      <li class="controller_Article"><span><span>@Html.ActionLink("文章管理","Index","Article")</span></span></li>
      <li class="controller_User"><span><span>@Html.ActionLink("用戶管理","Index","User")</span></span></li>
      </ul>
      <input id="controller" type="hidden" value="@Html.ViewContext.RouteData.Values["controller"]"/>
      <input id="action" type="hidden" value="@Html.ViewContext.RouteData.Values["action"]"/>
      View 中的代碼如上所示:
      1. 首先給所有的 li 加上一個 class
      2. 然后再利用兩個 hidden ,把 controller 和 action 的名字放到前端頁面中
      $(function () {
      SetNavClass(
      'top-navigation', 'active');
      });

      function SetNavClass(ulId, className) {
      controller
      = $('#controller').val();
      action
      = $('#action').val();
      eval(
      'controller_' + controller + ' = true');
      eval(
      'action_' + action + ' = true');
      list
      = $('#' + ulId + '>li');

      for (var k = 0; k < list.length; k++) {
      item
      = list[k];
      str
      = GetClassName(item);
      try {
      if (eval(str)) $(item).addClass(className);
      }
      catch (e) { }
      }
      }
      function GetClassName(item) {
      classes
      = $(item).attr('class').split(' ');
      for (var k = 0; k < classes.length; k++) {
      if (classes[k].indexOf('controller') > -1 || classes[k].indexOf('action') > -1) return classes[k];
      }
      }

      以上是 Javascript 的代碼:

      1. 讀取 controller 和 action 的名字
      2. 利用 eval 函數給 controller_[controller名字] 和 action_[action名字] 這兩個變量賦值
      3. 取出 class 中的表達式
      4. 利用 eval 函數執行表達式,判斷最后的結果,如果滿足條件就加上高亮的 class

      上述代碼不需要為每個頁面編寫,只需要在母版頁中編寫一次即可,再引用這段 Javascript 函數。

      如果你的 ul ID 和 高亮 class 名字不一樣,那么只要在調用這個函數的時候傳入你自己的就行了。

      高級應用

      就這么簡單?僅此而已?

      如果真的是這樣,那么完全可以直接利用 Javascript 判斷頁面地址來實現。

      那么讓我們來玩一些好玩的吧~

      因為是 eval 函數,所以完全可以在這個 class 中編寫復雜的表達式(其實就是 Javascript 表達式)

      <li class="controller_Home||controller_About"><span><span>@Html.ActionLink("首頁", "Index", "Home")</span></span></li>
      <li class="controller_Article&&action_Add"><span><span>@Html.ActionLink("文章管理", "Index", "Article")</span></span></li>

      以上兩行代碼表示:

      1. controller 只要是 Home,或者 About,都會激活這個鏈接
      2. controller 必須是 Article,action 必須是 Add

      也就是說,在這個 class 里可以輸入復雜的 Javascript,這樣就可以實現復雜的導航激活功能了!


      原文地址:MVC 下導航高亮的完美解決方案 (原文就是我自己的博客~ 所以是原創,不是轉載~)

      posted @ 2011-03-21 14:07  Dozer  閱讀(3700)  評論(26)    收藏  舉報
      主站蜘蛛池模板: 国产女主播喷水视频在线观看| 美女一区二区三区亚洲麻豆| 国产欧亚州美日韩综合区| 亚洲精品第一区二区三区| 国产成人午夜福利精品| av午夜福利一片免费看久久| jizzjizz少妇亚洲水多| 77777亚洲午夜久久多人| 99中文字幕国产精品| 久久综合九色综合97婷婷| 午夜成人无码免费看网站| 国产精品视频免费一区二区三区| 久久久久久久久久久免费精品| 金溪县| 久久久久亚洲AV色欲av| 巨爆乳中文字幕爆乳区| 国产福利姬喷水福利在线观看| 激情综合网激情综合网激情| 久久精品国产蜜臀av| 欧美三级在线播放| 最近免费中文字幕大全| 中文字幕在线亚洲日韩6页| 中阳县| 日本韩国一区二区精品| 人人妻人人澡人人爽人人精品电影| 岛国中文字幕一区二区| 久久88香港三级台湾三级播放| 少妇仑乱a毛片无码| 在线一区二区中文字幕| 国产日女人视频在线观看| 国产在线无码不卡播放| 我要看亚洲黄色太黄一级黄| 少妇被粗大的猛烈xx动态图| 久久久久成人精品免费播放动漫| 加勒比中文字幕无码一区| 亚洲精品日韩久久精品| 亚洲国产日韩欧美一区二区三区 | 色先锋av影音先锋在线| 亚洲成人av在线资源| 无码高潮爽到爆的喷水视频app| 国产在线午夜不卡精品影院|