Web应用程序系统的多用户权限控制设计及实现-首页模块【5】
Published on 2015-09-27 17:21 in 暂未分类 with 无涯Ⅱ

Web应用程序系统的多用户权限控制设计及实现-首页模块【5】

    首页模块就是展示不同权限的最终结果了,在阅读这章之前若有些不明白,可看看后续的单独的权限模块,用户模块,目录模块后从整体上再看首页模块。

    阅读该模块需要一定或者是比较熟练的js知识,EasyUI Tab控件知识。整个首页模块的流程是登陆模块获取到了用户的基本信息,可以访问的网页信息,目录信息后,封装在sessionManage会话中,通过JS文件做数据的格式转换及动作定义,通过Css文件做网页的效果美化。简而言之,就是获取后台数据渲染到网页。

    1.1视图

    首页模块的一级导航选择不同的信息关联二级导航,二级导航展开显示可以访问的页面链接。每一个链接在网页的展示模块通过EasyUI的Tab控件展示,可以实现如下效果:

    对应单个的tab中显示的网页信息是通过iframe标签的方式实现的。及打开一个tab就创建一个iframe对象。关闭一个tab就释放该iframe对象。

    首页模块的基本结构简图如下:

    首页视图是由两部分视图组成的。主视图主要是展示整个的框架结构,还有一个部分视图主要是展示左侧的权限信息页面。主视图中比较关键的代码如下:

    @using Models
    @using Page = Models.Page

     <!--先把页面model加载到视图--> 

     <!--解析Model生成一级导航目录信息--> 

                      <ul class="menuchild">
                            @if (ViewBag.Navigation != null)
                            {
                                IList<Catalog> navigationList = (List<Catalog>)ViewBag.Navigation;
                                foreach (Catalog item in navigationList)
                                {
                                <li><a onclick="navigationClick(@item.CatalogId);">@item.CatalogName</a><i></i></li>
                                }
                            }
                        </ul>

     <!--左边菜单容器 加载部分视图展示左边的菜单信息 -->   
                    <div class="scroll-panel" id="scrollpanel">
                        <div style="top: -10.8px;" class="scroll-content" id="scrollcontent">
                            <div id="rightListDiv">
                                @Html.Partial("_rightMessage", new { navigationId = -1 })
                            </div>
                        </div>
                    </div>

    首页详细视图代码如下:

    复制代码
      1 @using Models
      2 @using Page = Models.Page
      3 @{
      4     Layout = null;
      5 }
      6 <!DOCTYPE html>
      7 <html>
      8 <head>
      9     <meta name="viewport" content="width=device-width" />
     10     <title>####</title>
     11     <link rel="stylesheet" type="text/css" href="~/Content/easyui143/themes/gray/easyui.css">
     12     <link rel="stylesheet" type="text/css" href="~/Content/easyui143/themes/icon.css">
     13 
     14     <link href="~/Content/CSS/style.css" rel="stylesheet" />
     15     <style>
     16         .panel-tool {
     17             visibility: hidden;
     18         }
     19 
     20         #preferenceUl {
     21             display: list-item;
     22             margin: 5px;
     23             margin-top: 2px;
     24             padding: 10px;
     25         }
     26 
     27             #preferenceUl li {
     28                 display: list-item;
     29                 list-style-type: square;
     30                 margin: 5px;
     31             }
     32     </style>
     33 
     34 </head>
     35 
     36 <body style="overflow: hidden;">
     37 
     38     <div class="header">
     39         <!--header页面上面部分 -->
     40         <div class=" system_name"></div>
     41         <!--用户 -->
     42         <div class="top_user" onmouseover="theimg.src='@Url.Content("~/Content/image/title_images/user_white.png")'" onmouseout="theimg.src='@Url.Content("~/Content/image/title_images/user_blue.png")'">
     43             <dl class="topmenu">
     44                 <dd>
     45                     <div class="toptitle" style="height: 50px;">
     46                         <span style="width: 32px; height: 32px;">
     47                             <img id="theimg" src="~/Content/image/title_images/user_blue.png" />
     48                         </span>
     49                         <span class="spant">@Html.Raw(ViewData["UserName"])  </span>
     50                     </div>
     51                     <ul class="menuchild">
     52                         <li><a href="javascript:Exit();">退出系统</a><i></i></li>
     53 
     54                     </ul>
     55                 </dd>
     56             </dl>
     57         </div>
     58 
     59 
     60 
     61         <!--导航 -->
     62         <div class="top_navigation" onmouseover="nav_theimg.src='@Url.Content("~/Content/image/title_images/navigation.png")'" onmouseout="nav_theimg.src='@Url.Content("~/Content/image/title_images/navigation.png")'">
     63             <dl class="topmenu">
     64                 <dd>
     65                     <div class="toptitle" style="height: 50px;">
     66                         <span style="width: 32px; height: 32px;">
     67                             <img id="nav_theimg" src="~/Content/image/title_images/navigation.png" />
     68                         </span>
     69                         <span class="spant">导航</span>
     70                     </div>
     71                     <ul class="menuchild">
     72                         @if (ViewBag.Navigation != null)
     73                         {
     74                             IList<Catalog> navigationList = (List<Catalog>)ViewBag.Navigation;
     75                             foreach (Catalog item in navigationList)
     76                             {
     77                             <li><a onclick="navigationClick(@item.CatalogId);">@item.CatalogName</a><i></i></li>
     78                             }
     79                         }
     80                     </ul>
     81                 </dd>
     82             </dl>
     83         </div>
     84 
     85 
     86 
     87         <!--首页 -->
     88         <div class="top_index" onmouseover="index_img.src='../Content/image/title_images/index_white.png'" onmouseout="index_img.src='../Content/image/title_images/index_blue.png'">
     89             <dl class="topmenu">
     90                 <dd>
     91                     <div class="toptitle" style="height: 50px;">
     92                         <a href="#" onclick="addTab('首页','');" style="color: #ffffff"><span style="width: 32px; height: 32px;">
     93                             <img id="index_img" src="~/Content/image/title_images/index_blue.png" />
     94                         </span>
     95                             <span class="spant">首页 </span></a>
     96                     </div>
     97                 </dd>
     98             </dl>
     99         </div>
    100 
    101     </div>
    102     <!--header结束 -->
    103 
    104     <div class="logo" id="nowTime">
    105         <!--系统logodiv -->
    106     </div>
    107 
    108     <div class="main_hoder">
    109         <!--下面整个容器 -->
    110         <div class="left_hoder">
    111             <!--左边容器 -->
    112             <div class="left_hoder_menu">
    113                 <!--左边菜单容器 -->
    114                 <div class="scroll-panel" id="scrollpanel">
    115                     <div style="top: -10.8px;" class="scroll-content" id="scrollcontent">
    116                         <div id="rightListDiv">
    117                             @Html.Partial("_rightMessage", new { navigationId = -1 })
    118                         </div>
    119                     </div>
    120                 </div>
    121                 <div class="scroll-bar" id="scrollbar">
    122                     <div class="scroll-block" id="scrollblock"></div>
    123                 </div>
    124             </div>
    125         </div>
    126 
    127         <div class="center_hoder">
    128             <div class="easyui-tabs" data-options="fit:true,border:false,plain:true" id="pageTab">
    129                
    130 
    131                 <div title="首页" style="padding: 10px;">
    132                 
    133 
    134                     <div class="easyui-layout" data-options="fit:true">
    135 
    136                      欢迎加载首页信息。
    137                       
    138 
    139                     </div>
    140 
    141 
    142 
    143                 </div>
    144             </div>
    145         </div>
    146         <!--其他网页显示的容器-->
    147         <div class="footer">
    148             技术支持:######
    149         </div>
    150 
    151     </div>
    152     <!--下面整个容器 -->
    153 </body>
    154 
    155 <script src="~/Scripts/jquery.js"></script>
    156 <!--滚动条效果 -->
    157 <script src="~/Scripts/mousewheel.js"></script>
    158 <script src="~/Scripts/scroll.js"></script>
    159 <script type="text/javascript" src="~/Content/easyui143/jquery.easyui.min.js"></script>
    160 <script type="text/javascript" src="~/Content/easyui143/locale/easyui-lang-zh_CN.js"></script>
    161 
    162 <script type="text/javascript" src="~/Scripts/CustomJs/default.js"></script>
    163 
    164 </html>
    IndexHome.cshtml
    复制代码

    部分视图代码完整代码如下:

    复制代码
     1 @using Models
     2 @using Page = Models.Page
     3 <!DOCTYPE html>
     4 <html>
     5 <head>
     6     <title></title>
     7     <meta name="viewport" content="width=device-width" />
     8 
     9     <link href="~/Content/CSS/style.css" rel="stylesheet" />
    10 </head>
    11 <body>
    12     <dl class="leftmenu">
    13         <!--左边一级菜单样式 -->
    14         @if (ViewBag.RightList != null)
    15         {
    16             IList<Catalog> rightList = (List<Catalog>)ViewBag.RightList;
    17             foreach (Catalog right in rightList)
    18             {
    19                 IList<Page> pageList = right.PageList;
    20                 if (pageList.Count > 0)
    21                 {
    22             <dd>
    23                 <div class='title'>
    24                     <span class='img_style'>
    25                         <img id='j_img' src='@right.PictureUrl' /></span>@right.CatalogName
    26                 </div>
    27                 <ul class='menuson'>
    28                     @foreach (Page page in pageList)
    29                     {
    30                         <li><cite></cite>
    31                             <a href='#' onclick="addTab('@page.PageName','@("../" + page.PageUrl)');">@page.PageName</a><i></i></li>
    32                     }
    33                 </ul>
    34             </dd>
    35                 }
    36             }
    37         }
    38     </dl>
    39 
    40     <script type="text/javascript" src="~/Scripts/CustomJs/_rightMessage.js"></script>
    41 </body>
    42 </html>
    _rightMessage.cshtml
    复制代码

    1.2JS文件

    首页加载共用了两个JS文件,其中视图IndexHome.cshtml对应default.js,_rightMessage.cshtml对应_rightMessage.js文件。

    两个文件中关键的代码均是创建iframe对象和销毁iframe对象,部分代码如下:

     /**  把iframe与Tab的属性结合起来。
             * 增加iframe模式的标签页 
             * param {[type]} jq     [description]  
             * param {[type]} params [description]  
              */
            addIframeTab: function (jq, params) {
                return jq.each(function () {
                    if (params.tab.href) {
                        delete params.tab.href;
                    }
                    $(this).tabs('add', params.tab);
                    $(this).tabs('loadTabIframe', { 'which': params.tab.title, 'iframe': params.iframe });
                });
            },

            /**
             * 更新tab的iframe内容  
             * param  {jq Object} jq     [description]  
            * param  {Object} params [description]  
           * return {jq Object}        [description]  
            */
            updateIframeTab: function (jq, params) {
                return jq.each(function () {
                    params.iframe = params.iframe || {};
                    if (!params.iframe.src) {
                        var $tab = $(this).tabs('getTab', params.which);
                        if ($tab == null) return;
                        var $tabBody = $tab.panel('body');
                        var $iframe = $tabBody.find('iframe');
                        if ($iframe.length === 0) return;
                        $.extend(params.iframe, { 'src': $iframe.attr('src') });
                    }
                    $(this).tabs('loadTabIframe', params);
                });
            }

    //创建Frame
    function createFrame(url) {
        var s = '<iframe scrolling="hidden" frameborder="0"  src="' + url + '" style="width:100%;height:98%;"></iframe>';
        return s;
    };


    //添加tab页
    function addTab(title, tabHref) {
        if ($("#pageTab").tabs("exists", title)) {
            $("#pageTab").tabs("select", title);
        } else {
            $('#pageTab').tabs('addIframeTab', {
                tab: { title: title, closable: true },
                iframe: { src: tabHref }
            });
        }

    default.js文件的完整代码如下:

    复制代码
      1 $(function () {
      2     //设置左侧导航栏的默认高度
      3     $(".scroll-panel").height($(window).height() - 110);
      4 
      5     //左侧导航菜单监听事件,修改图标样式
      6     $('.title').click(function () {
      7         var $ul = $(this).next('ul');
      8         var src, srcArray;
      9 
     10         src = $(".title_current img").attr("src");
     11         if (src != null) {
     12             srcArray = src.indexOf('_blue');
     13 
     14             src = src.substring(0, srcArray) + '.png';
     15 
     16             $(".title_current img").attr("src", src);
     17         }
     18         $(".title_current").removeClass("title_current"); //移除所有的title_current样式类
     19 
     20         $(".leftmenu").find('ul').slideUp();
     21 
     22         if ($ul.is(':visible')) {
     23             //收起导航菜单
     24             $(this).next('ul').slideUp();
     25         } else {
     26             //展开导航菜单并修改目录菜单的样式以及图标
     27             $(this).next('ul').slideDown();
     28             $(this).addClass("title_current");
     29 
     30             src = $(".title_current img").attr("src"); //目录图标
     31             srcArray = src.split('.');
     32             src = srcArray[0] + '_blue.png';
     33             $(".title_current img").attr("src", src);
     34         }
     35     });
     36 
     37 
     38     //页面导航监听事件
     39     $('.menuson a').click(function () {
     40         $('.menuson a').removeClass("aclick");
     41         $(this).addClass("aclick");
     42     });
     43 
     44 
     45     //当前用户获取焦点
     46     $('.top_user').hover(function () {
     47         var path = $('.top_user .topmenu .toptitle');
     48         var $ul = path.next('ul');
     49         if ($ul.is(':visible')) {
     50             path.next('ul').slideUp();
     51         } else {
     52             path.next('ul').slideDown();
     53         }
     54     });
     55 
     56 
     57     //导航获取焦点
     58     $('.top_navigation').hover(function () {
     59         var path = $('.top_navigation .topmenu .toptitle');
     60         var $ul = path.next('ul');
     61         if ($ul.is(':visible')) {
     62             path.next('ul').slideUp();
     63         } else {
     64             path.next('ul').slideDown();
     65         }
     66     });
     67 
     68 
     69     $.extend($.fn.tabs.methods, {
     70         /**
     71          * 加载iframe内容  
     72          * param  {jq Object} jq     [description]  
     73          * param  {Object} params    params.which:tab的标题或者index;params.iframe:iframe的相关参数  
     74          * return {jq Object}        [description]  
     75           */
     76         loadTabIframe: function (jq, params) {
     77             return jq.each(function () {
     78                 var $tab = $(this).tabs('getTab', params.which);
     79                 if ($tab == null) return;
     80 
     81                 var $tabBody = $tab.panel('body');
     82 
     83                 //销毁已有的iframe   
     84                 var $frame = $('iframe', $tabBody);
     85                 if ($frame.length > 0) {
     86                     try {//跨域会拒绝访问,这里处理掉该异常   
     87                         $frame[0].contentWindow.document.write('');
     88                         $frame[0].contentWindow.close();
     89                     } catch (e) {
     90                         //Do nothing   
     91                     }
     92                     $frame.remove();
     93                     if ($.browser.msie) {
     94                         CollectGarbage();
     95                     }
     96                 }
     97                 $tabBody.html('');
     98                 $tabBody.css({ 'overflow': 'hidden', 'position': 'relative' });
     99                 var $mask = $('<div style="position:absolute;z-index:2;width:100%;height:100%;background:#ccc;z-index:1000;opacity:0.3;filter:alpha(opacity=30);"><div>').appendTo($tabBody);
    100                 var $maskMessage = $('<div class="mask-message" style="z-index:3;width:auto;height:16px;line-height:16px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-92px;border:2px solid #95B8E7;padding: 12px 5px 10px 30px;background: url(\'/Content/EasyUI/themes/bootstrap/images/loading.gif\') no-repeat scroll 5px center #FFF;">' + (params.iframe.message || '正在加载,请稍候 ...') + '</div>').appendTo($tabBody);
    101                 var $containterMask = $('<div style="position:absolute;width:100%;height:100%;z-index:1;background:#fff;"></div>').appendTo($tabBody);
    102                 var $containter = $('<div style="position:absolute;width:100%;height:100%;z-index:0;"></div>').appendTo($tabBody);
    103 
    104                 var iframe = document.createElement("iframe");
    105                 iframe.src = params.iframe.src;
    106                 iframe.frameBorder = params.iframe.frameBorder || 0;
    107                 iframe.height = params.iframe.height || '100%';
    108                 iframe.width = params.iframe.width || '100%';
    109                 if (iframe.attachEvent) {
    110                     iframe.attachEvent("onload", function () {
    111                         $([$mask[0], $maskMessage[0]]).fadeOut(params.iframe.delay || 'slow', function () {
    112                             $(this).remove();
    113                             if ($(this).hasClass('mask-message')) {
    114                                 $containterMask.fadeOut(params.iframe.delay || 'slow', function () {
    115                                     $(this).remove();
    116                                 });
    117                             }
    118                         });
    119                     });
    120                 } else {
    121                     iframe.onload = function () {
    122                         $([$mask[0], $maskMessage[0]]).fadeOut(params.iframe.delay || 'slow', function () {
    123                             $(this).remove();
    124                             if ($(this).hasClass('mask-message')) {
    125                                 $containterMask.fadeOut(params.iframe.delay || 'slow', function () {
    126                                     $(this).remove();
    127                                 });
    128                             }
    129                         });
    130                     };
    131                 }
    132                 $containter[0].appendChild(iframe);
    133             });
    134         },
    135 
    136         /**
    137          * 增加iframe模式的标签页  
    138          * param {[type]} jq     [description]  
    139          * param {[type]} params [description]  
    140           */
    141         addIframeTab: function (jq, params) {
    142             return jq.each(function () {
    143                 if (params.tab.href) {
    144                     delete params.tab.href;
    145                 }
    146                 $(this).tabs('add', params.tab);
    147                 $(this).tabs('loadTabIframe', { 'which': params.tab.title, 'iframe': params.iframe });
    148             });
    149         },
    150 
    151         /**
    152          * 更新tab的iframe内容  
    153          * param  {jq Object} jq     [description]  
    154         * param  {Object} params [description]  
    155        * return {jq Object}        [description]  
    156         */
    157         updateIframeTab: function (jq, params) {
    158             return jq.each(function () {
    159                 params.iframe = params.iframe || {};
    160                 if (!params.iframe.src) {
    161                     var $tab = $(this).tabs('getTab', params.which);
    162                     if ($tab == null) return;
    163                     var $tabBody = $tab.panel('body');
    164                     var $iframe = $tabBody.find('iframe');
    165                     if ($iframe.length === 0) return;
    166                     $.extend(params.iframe, { 'src': $iframe.attr('src') });
    167                 }
    168                 $(this).tabs('loadTabIframe', params);
    169             });
    170         }
    171     });
    172 
    173 
    174 
    175 
    176 });
    177 
    178 //退出登陆
    179 function Exit() {
    180     if (window.confirm("确定要退出吗?")) {
    181         window.location.href = "../Login/Login";
    182     }
    183 };
    184 
    185 
    186 //获取当前时间并格式化
    187 function current() {
    188     var d = new Date(), str = '';
    189 
    190     if (parseInt(d.getHours()) < 10) {
    191         str += "0" + d.getHours() + ':';
    192     }
    193     else {
    194         str += d.getHours() + ':';
    195     }
    196     if (parseInt(d.getMinutes()) < 10) {
    197         str += "0" + d.getMinutes() + ':';
    198     }
    199     else {
    200         str += d.getMinutes() + ':';
    201     }
    202 
    203     if (parseInt(d.getSeconds()) < 10) {
    204         str += "0" + d.getSeconds();
    205     }
    206     else {
    207         str += d.getSeconds();
    208     }
    209 
    210     str += "</div><div style='position: relative; top: 40px; left: 120px; width: 100px; font-family: 微软雅黑; font-size: 12px;'>"
    211         + d.getFullYear() + '年'; //获取当前年份
    212     if (parseInt(d.getMonth()) < 9) {
    213         var m = d.getMonth() + 1 + '月';
    214         str += "0" + m;
    215     }
    216     else {
    217         str += d.getMonth() + 1 + '月'; //获取当前月份(0——11) 
    218     }
    219     if (parseInt(d.getDate()) < 10) {
    220         str += "0" + d.getDate() + '日 ';
    221     }
    222     else {
    223         str += d.getDate() + '日 ';
    224     }
    225     str += "</div>";
    226 
    227 
    228     var today = new Array("星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    229 
    230     var w = "<div style='position: relative; top: 30px; left: 120px; width: 100px; font-family: 微软雅黑; font-size: 12px; font-weight: bold;'>"
    231         + today[d.getDay()] + '&nbsp;';
    232     return w + str;
    233 }
    234 
    235 //设置显示时间
    236 setInterval(function () { $("#nowTime").html(current); }, 1000);
    237 
    238 
    239 //“导航”下拉选项的点击事件
    240 function navigationClick(navigationId) {
    241     $("#rightListDiv").load('/IndexHome/RightMessage?navigationId=' + navigationId);
    242 };
    243 
    244 //创建Frame
    245 function createFrame(url) {
    246     var s = '<iframe scrolling="hidden" frameborder="0"  src="' + url + '" style="width:100%;height:98%;"></iframe>';
    247     return s;
    248 };
    249 
    250 
    251 //添加tab页
    252 function addTab(title, tabHref) {
    253     if ($("#pageTab").tabs("exists", title)) {
    254         $("#pageTab").tabs("select", title);
    255     } else {
    256         $('#pageTab').tabs('addIframeTab', {
    257             tab: { title: title, closable: true },
    258             iframe: { src: tabHref }
    259         });
    260     }
    261 };
    262 
    263 //点击树节点,打开新的tab页
    264 function AddNewTab(node) {
    265     if (node.attributes != null) {
    266         if ($("#pageTab").tabs("exists", node.attributes.pageName)) {
    267             $("#pageTab").tabs("select", node.attributes.pageName);
    268         } else {
    269             $('#pageTab').tabs('addIframeTab', {
    270                 tab: { title: node.attributes.pageName, closable: true },
    271                 iframe: { src: "/" + node.attributes.url }
    272             });
    273         }
    274     }
    275 
    276 };
    default.js
    复制代码

     

    _rightMessage.js文件的完整代码如下:

    复制代码
      1 $(function () {
      2     //左侧导航菜单监听事件,修改图标样式
      3     $('.title').click(function () {
      4         var $ul = $(this).next('ul');
      5         var src, srcArray;
      6 
      7         src = $(".title_current img").attr("src");
      8         if (src != null) {
      9             srcArray = src.indexOf('_blue');
     10 
     11             src = src.substring(0, srcArray) + '.png';
     12 
     13             $(".title_current img").attr("src", src);
     14         }
     15         $(".title_current").removeClass("title_current"); //移除所有的title_current样式类
     16 
     17         $(".leftmenu").find('ul').slideUp();
     18 
     19         if ($ul.is(':visible')) {
     20             //收起导航菜单
     21             $(this).next('ul').slideUp();
     22         } else {
     23             //展开导航菜单并修改目录菜单的样式以及图标
     24             $(this).next('ul').slideDown();
     25             $(this).addClass("title_current");
     26 
     27             src = $(".title_current img").attr("src"); //目录图标
     28             srcArray = src.split('.');
     29             src = srcArray[0] + '_blue.png';
     30             $(".title_current img").attr("src", src);
     31         }
     32     });
     33 
     34 
     35     //页面导航监听事件
     36     $('.menuson a').click(function () {
     37         $('.menuson a').removeClass("aclick");
     38         $(this).addClass("aclick");
     39     });
     40 
     41 
     42 
     43 
     44     $.extend($.fn.tabs.methods, {
     45         /**
     46          * 加载iframe内容  
     47          * param  {jq Object} jq     [description]  
     48          * param  {Object} params    params.which:tab的标题或者index;params.iframe:iframe的相关参数  
     49          * return {jq Object}        [description]  
     50           */
     51         loadTabIframe: function (jq, params) {
     52             return jq.each(function () {
     53                 var $tab = $(this).tabs('getTab', params.which);
     54                 if ($tab == null) return;
     55 
     56                 var $tabBody = $tab.panel('body');
     57 
     58                 //销毁已有的iframe   
     59                 var $frame = $('iframe', $tabBody);
     60                 if ($frame.length > 0) {
     61                     try {//跨域会拒绝访问,这里处理掉该异常   
     62                         $frame[0].contentWindow.document.write('');
     63                         $frame[0].contentWindow.close();
     64                     } catch (e) {
     65                         //Do nothing   
     66                     }
     67                     $frame.remove();
     68                     if ($.browser.msie) {
     69                         CollectGarbage();
     70                     }
     71                 }
     72                 $tabBody.html('');
     73                 $tabBody.css({ 'overflow': 'hidden', 'position': 'relative' });
     74                 var $mask = $('<div style="position:absolute;z-index:2;width:100%;height:100%;background:#ccc;z-index:1000;opacity:0.3;filter:alpha(opacity=30);"><div>').appendTo($tabBody);
     75                 var $maskMessage = $('<div class="mask-message" style="z-index:3;width:auto;height:16px;line-height:16px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-92px;border:2px solid #95B8E7;padding: 12px 5px 10px 30px;background: url(\'/Content/EasyUI/themes/bootstrap/images/loading.gif\') no-repeat scroll 5px center #FFF;">' + (params.iframe.message || '正在加载,请稍候 ...') + '</div>').appendTo($tabBody);
     76                 var $containterMask = $('<div style="position:absolute;width:100%;height:100%;z-index:1;background:#fff;"></div>').appendTo($tabBody);
     77                 var $containter = $('<div style="position:absolute;width:100%;height:100%;z-index:0;"></div>').appendTo($tabBody);
     78 
     79                 var iframe = document.createElement("iframe");
     80                 iframe.src = params.iframe.src;
     81                 iframe.frameBorder = params.iframe.frameBorder || 0;
     82                 iframe.height = params.iframe.height || '100%';
     83                 iframe.width = params.iframe.width || '100%';
     84                 if (iframe.attachEvent) {
     85                     iframe.attachEvent("onload", function () {
     86                         $([$mask[0], $maskMessage[0]]).fadeOut(params.iframe.delay || 'slow', function () {
     87                             $(this).remove();
     88                             if ($(this).hasClass('mask-message')) {
     89                                 $containterMask.fadeOut(params.iframe.delay || 'slow', function () {
     90                                     $(this).remove();
     91                                 });
     92                             }
     93                         });
     94                     });
     95                 } else {
     96                     iframe.onload = function () {
     97                         $([$mask[0], $maskMessage[0]]).fadeOut(params.iframe.delay || 'slow', function () {
     98                             $(this).remove();
     99                             if ($(this).hasClass('mask-message')) {
    100                                 $containterMask.fadeOut(params.iframe.delay || 'slow', function () {
    101                                     $(this).remove();
    102                                 });
    103                             }
    104                         });
    105                     };
    106                 }
    107                 $containter[0].appendChild(iframe);
    108             });
    109         },
    110 
    111         /**
    112          * 增加iframe模式的标签页  
    113          * param {[type]} jq     [description]  
    114          * param {[type]} params [description]  
    115           */
    116         addIframeTab: function (jq, params) {
    117             return jq.each(function () {
    118                 if (params.tab.href) {
    119                     delete params.tab.href;
    120                 }
    121                 $(this).tabs('add', params.tab);
    122                 $(this).tabs('loadTabIframe', { 'which': params.tab.title, 'iframe': params.iframe });
    123             });
    124         },
    125 
    126         /**
    127          * 更新tab的iframe内容  
    128          * param  {jq Object} jq     [description]  
    129         * param  {Object} params [description]  
    130        * return {jq Object}        [description]  
    131         */
    132         updateIframeTab: function (jq, params) {
    133             return jq.each(function () {
    134                 params.iframe = params.iframe || {};
    135                 if (!params.iframe.src) {
    136                     var $tab = $(this).tabs('getTab', params.which);
    137                     if ($tab == null) return;
    138                     var $tabBody = $tab.panel('body');
    139                     var $iframe = $tabBody.find('iframe');
    140                     if ($iframe.length === 0) return;
    141                     $.extend(params.iframe, { 'src': $iframe.attr('src') });
    142                 }
    143                 $(this).tabs('loadTabIframe', params);
    144             });
    145         }
    146     });
    147 
    148 
    149 
    150 
    151 });
    152 
    153 
    154 
    155 //创建Frame
    156 function createFrame(url) {
    157     var s = '<iframe scrolling="hidden" frameborder="0"  src="' + url + '" style="width:100%;height:98%;"></iframe>';
    158     return s;
    159 };
    160 
    161 
    162 //添加tab页
    163 function addTab(title, tabHref) {
    164     if ($("#pageTab").tabs("exists", title)) {
    165         $("#pageTab").tabs("select", title);
    166     } else {
    167         $('#pageTab').tabs('addIframeTab', {
    168             tab: { title: title, closable: true },
    169             iframe: { src: tabHref }
    170         });
    171     }
    172 };
    _rightMessage.js
    复制代码

     

     1.3控制器

    首页控制器就是把SessionManage会话类中的信息取出来。部分代码如下:

             //一级导航目录
                    IList<Catalog> navigationList = SessionManage.CurrentUser.NavigationList;
                    //操作权限页面
                    IList<Catalog> rightList = SessionManage.CurrentUser.RightList;
                    if (navigationList != null && navigationList.Count > 0)
                    {
                        IList<Catalog> currentRight =
                            (from item in rightList where item.ParentId == navigationList.First().CatalogId select item)
                                .ToList();
                        ViewBag.Navigation = navigationList;
                        ViewBag.RightList = currentRight;
                    }

           public PartialViewResult RightMessage(int navigationId)

          {

          //根据一级导航信息,展示二级导航信息

         }

    IndexHomeController.cs控制器的详细代码如下:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.Mvc;
     6 using Session;
     7 using OdbcDbAccess;
     8 using System.Data;
     9 using Models;
    10 
    11 
    12 namespace CqReportSystem.Controllers
    13 {
    14     public class IndexHomeController : Controller
    15     {
    16         /// <summary>
    17         /// ****************************
    18         /// 功能:主页
    19         /// 作者:王令
    20         /// 时间:2015-7-18
    21         /// 邮箱:1129137758@qq.com
    22         /// ****************************
    23         
    24         public ActionResult IndexHome()
    25         {
    26             if (SessionManage.CurrentUser == null)
    27             {
    28                 Response.Redirect("/");
    29             }
    30             else
    31             {
    32                 //一级导航目录
    33                 IList<Catalog> navigationList = SessionManage.CurrentUser.NavigationList;
    34                 //操作权限页面
    35                 IList<Catalog> rightList = SessionManage.CurrentUser.RightList;
    36                 if (navigationList != null && navigationList.Count > 0)
    37                 {
    38                     IList<Catalog> currentRight =
    39                         (from item in rightList where item.ParentId == navigationList.First().CatalogId select item)
    40                             .ToList();
    41                     ViewBag.Navigation = navigationList;
    42                     ViewBag.RightList = currentRight;
    43                 }
    44             
    45                 ViewData["UserName"] = SessionManage.CurrentUser.OperatorName;
    46             }
    47             return View();
    48         }
    49 
    50 
    51         /// <summary>
    52         /// 根据一级目录展示二级目录及访问页面
    53         /// </summary>
    54         /// <param name="navigationId"></param>
    55         /// <returns></returns>
    56         public PartialViewResult RightMessage(int navigationId)
    57         {
    58             if (SessionManage.CurrentUser == null)
    59             {
    60                 Response.Write("<script> window.parent.location.href = '/Login/Login';</script>");
    61             }
    62             else
    63             {
    64                 IList<Catalog> rightList = SessionManage.CurrentUser.RightList;
    65                 if (navigationId == -1)
    66                 {
    67                     IList<Catalog> navigationList = SessionManage.CurrentUser.NavigationList;
    68                     navigationId = navigationList.First().CatalogId;
    69                 }
    70 
    71                 IList<Catalog> currentRight =
    72                        (from item in rightList where item.ParentId == navigationId select item)
    73                            .ToList();
    74                 ViewBag.RightList = currentRight;
    75             }
    76 
    77             return PartialView("_rightMessage");
    78         }
    79 
    80 
    81         public ActionResult Home()
    82         {
    83             return View();
    84         }
    85 
    86     }
    87 }
    IndexHomeController.cs
    复制代码

     

    1.4运行页面

    当以管理员身份登录时,运行界面如下:

    当以一般用户登录时,运行界面如下:


               

    posted @   无涯Ⅱ  阅读(1994)  评论(3编辑  收藏  举报
    编辑推荐:
    · 如何编写易于单元测试的代码
    · 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
    · .NET Core 中如何实现缓存的预热?
    · 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
    · AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
    阅读排行:
    · 周边上新:园子的第一款马克杯温暖上架
    · Open-Sora 2.0 重磅开源!
    · 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
    · Ollama——大语言模型本地部署的极速利器
    · DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
    点击右上角即可分享
    微信分享提示