zoukankan      html  css  js  c++  java
  • 网页后台管理导航

    在日常的项目中往往会需要使用页面的导航路径来记录和跳转模块,现在我们就说一下如何做一个设有子父级的导航。

    实现效果如下:

    这里结合bootstrap做样式来实现

    第一步:编写获取当前模块的子父级节点信息,并且判断用户是否有权限Ian访问。

    建立当前模块管理类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Count.Models.System
    {
        public partial class AdminModuleCurrent
        {
            /// <summary>
            /// 当前请求模块的一级类ID 
            /// </summary>
            public virtual Int32 ParentID { get; set; }
            /// <summary>
            /// 当前请求模块的二级类ID 
            /// </summary>
            public virtual Int32 SecondId { get; set; }
    
            /// <summary>
            /// 页面的导航标题
            /// </summary>
            public virtual string PageTitle { get; set; }
    
            /// <summary>
            /// 页面的导航链接
            /// </summary>
            public virtual string BreadCrumbList { get; set; }
        }
    }

    当前访问模块的各级关系方法

           public static AdminModuleCurrent GetCurrentModuleParentIdByUser(string actionName, string controllerName, string areaName, string CurrentUserLimit)
           {
               var list =new BIModule().GetUserAllModule(CurrentUserLimit);
               if (list != null)
                   return (from info in list where !string.IsNullOrEmpty(areaName) && !string.IsNullOrEmpty(controllerName) && !string.IsNullOrEmpty(actionName) where (info.Module_Area.ToLower() == areaName.ToLower()) && (info.Module_Controller.ToLower() == controllerName.ToLower()) && (info.Module_Action.ToLower() == actionName.ToLower()) select new BIModule(). GetCurrentModule(info)).FirstOrDefault();
               else
                   return null;
           }
    
           /// <summary>
           /// 获得当前请求的模块信
           /// </summary>
           /// <param name="minfo"></param>
           /// <returns></returns>
           public  AdminModuleCurrent GetCurrentModule(BIModuleInfo minfo)
           {
               var breadCrumbList = "";
               var breadCrumbList2 = "";
               var cmodel = new AdminModuleCurrent();
    
               if (minfo.P_ID == 0)
               {
                   cmodel.ParentID = Convert.ToInt32(minfo.Module_ID);
                   cmodel.SecondId = Convert.ToInt32(minfo.Module_ID);
                   cmodel.PageTitle = minfo.Module_Name;
               }
               else
               {
                   //判断是否还有父级
                   var parentmodl =BIModuleInfoFindById(minfo.P_ID);
                   var oneId = 0;
                   if (parentmodl != null)
                   {
                       oneId = Convert.ToInt32(parentmodl.P_ID);
                       var cmurl2 = GetMUrl(parentmodl);
                       breadCrumbList2 = "<li><a href="" + cmurl2 + "">" + parentmodl.Module_Name + "</a><i class="fa fa-angle-right"></i></li>";
                   }
    
                   if (oneId > 0)
                   {
                       cmodel.ParentID = oneId;
                       cmodel.SecondId = Convert.ToInt32(minfo.P_ID);
                       cmodel.PageTitle = minfo.Module_Name;
    
                       var secondparentmodl = BIModuleInfoFindById(Convert.ToInt32(oneId));
                       if (secondparentmodl != null)
                       {
                           var cmurl1 = GetMUrl(parentmodl);
                           breadCrumbList = "<li><a href="" + cmurl1 + "">" + secondparentmodl.Module_Name + "</a><i class="fa fa-angle-right"></i></li>" + breadCrumbList2;
                       }
                       else
                       {
                           breadCrumbList = breadCrumbList2;
                       }
                   }
                   else
                   {
                       cmodel.ParentID = Convert.ToInt32(minfo.P_ID);
                       cmodel.SecondId = Convert.ToInt32(minfo.Module_ID);
                       cmodel.PageTitle = minfo.Module_Name;
    
                       breadCrumbList = breadCrumbList2;
                   }
    
    
               }
    
               breadCrumbList += "<li><a href="javascript:;">" + minfo.Module_Name + "</a></li>";
               cmodel.BreadCrumbList = breadCrumbList;
               return cmodel;
           }
    
           /// <summary>
           /// 获得模块的url
           /// </summary>
           /// <param name="model"></param>
           /// <returns></returns>
           public static string GetMUrl(BIModuleInfo model)
           {
               var aurl = "";
               var siteurl = IM.Utils.Configuration.AppSettings("SiteUrl");
               if (!string.IsNullOrEmpty(model.Module_Url))
               {
                   if (model.Module_Url.Contains("http://") == true)
                   {
                       aurl = model.Module_Url;
                   }
                   else
                   {
                       aurl = siteurl + model.Module_Area + "/" + model.Module_Controller + "/" + model.Module_Action;
                   }
               }
               else if (!string.IsNullOrEmpty(model.Module_Area) && !string.IsNullOrEmpty(model.Module_Controller) && !string.IsNullOrEmpty(model.Module_Action))
               {
                   aurl = siteurl + model.Module_Area + "/" + model.Module_Controller + "/" + model.Module_Action;
               }
               else
               {
                   aurl = "javascript:;";
               }
               return aurl;
           }

    在页面加载的基类中添加对当前访问控制器的验证和读取,并对当前访问前边所建的类进行实例化

    /// <summary>
            /// 在执行action之前处理模块信息
            /// </summary>
            /// <param name="filterContext"></param>
            protected override void OnActionExecuting(ActionExecutingContext filterContext)
            {
    base.OnActionExecuting(filterContext);
                CurrentAdminUser = IM.Utils.CookieHelper.GetCookie("uname");
                this.SiteUrl = IM.Utils.Configuration.AppSettings("SiteUrl");
    
                var actionName = filterContext.RequestContext.RouteData.Values["action"].ToString();
                var controllerName = filterContext.RequestContext.RouteData.Values["controller"].ToString();
                var areaName = filterContext.RequestContext.RouteData.DataTokens["area"].ToString();
                this.CurrentSiteUrl = IM.Utils.Configuration.AppSettings("SiteUrl") + areaName + "/" + controllerName + "/" + actionName;
    
    
                filterContext.Controller.ViewBag.ControllerName = "/" + areaName + "/" + controllerName + "/" + actionName;
    
                IsAjaxRequest = filterContext.HttpContext.Request.IsAjaxRequest();
    
                var currentModuleParentId = BIModule.GetCurrentModuleParentIdByUser(actionName, controllerName, areaName, CurrentUserLimit);
                if (currentModuleParentId == null)
                {
                    if (IsAjaxRequest)
                    {
                        RedirectJavaScript(filterContext);
                    }
                    else
                    {
                        var strurlerrorurl = @Url.Content("~/Error/ErrorInfo/ErrorAuth");
                        RedirectUrl(strurlerrorurl, filterContext);
                    }
                }
                else
                {
                    ViewBag.CurrentModuleParentId = currentModuleParentId;
                }
    
            }

    视图页面调用

    @{
        var mParentId = 0;
        var msecondid = 0;
        var PageTitle = "";
        var BreadCrumbList = "";
        if (ViewBag.CurrentModuleParentId != null)
        {
            var vModuleParentId = (Count.Models.System.AdminModuleCurrent)ViewBag.CurrentModuleParentId;
            mParentId = vModuleParentId.ParentID;
            msecondid = vModuleParentId.SecondId;
            PageTitle = vModuleParentId.PageTitle;
            BreadCrumbList = vModuleParentId.BreadCrumbList;
        }
        }
    <div class="row-fluid">
                        <div class="span12">
                            <!-- BEGIN PAGE TITLE & BREADCRUMB-->
                            <ul class="breadcrumb">
                                <li>
                                    <i class="fa fa-home"></i>
                                    <a href="@Url.Content("~/count")">首页</a>
                                    <i class="fa fa-angle-right"></i>
                                </li>
                                @Html.Raw(BreadCrumbList)
    
                                @* @Html.Partial("_MetronicBreadCrumb", BreadCrumbList)*@
    
                            </ul>
                            <!-- END PAGE TITLE & BREADCRUMB-->
                        </div>
                    </div>
  • 相关阅读:
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    AtCoder Grand Contest 013 题解
    AtCoder Grand Contest 012 题解
    AtCoder Grand Contest 011 题解
    AtCoder Grand Contest 010 题解
    AtCoder Grand Contest 009 题解
    NOIP2017 Day2 题解
    博客园主题备份
    多项式全家桶
  • 原文地址:https://www.cnblogs.com/loyung/p/7158733.html
Copyright © 2011-2022 走看看