MVC+Bootstrap 企业通用框架搭建--左侧导航菜单的实现(2)

为了实现点击之后导航菜单变成这个样式我使用了mvc的切面编程实现;就是每点击一个菜单进入SupportFilterAttribute  这个类的OnActionExecuting 方法中得到方法的控制器的url;去数据库查询点击了那个导航菜单

保存到导航菜单点击表信息里面;根据这个改变了导航菜单点击的样式;

SupportFilterAttribute代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters;
using System.Web.Mvc;
using System.Web.Routing;
using Microsoft.Practices.Unity;
using SqlServer.Entity;
using SqlServer.BLL;
using SqlServer.DAL;
using SqlServer.IDAL;
namespace ManagerSystem.UI.Filters
{
public class SupportFilterAttribute : System.Web.Mvc.ActionFilterAttribute
{
public string ActionName { get; set; }
private string Area;
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);

}

/// <summary>
/// Action加上[SupportFilter]在执行actin之前执行以下代码,通过[SupportFilter(ActionName="Index")]指定参数
/// </summary>
/// <param name="filterContext">页面传过来的上下文</param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//读取请求上下文中的Controller,Action,Id
var routes = new RouteCollection();
RouteConfig.RegisterRoutes(routes);
RouteData routeData = routes.GetRouteData(filterContext.HttpContext);
//取出区域的控制器Action,id
string ctlName = filterContext.Controller.ToString();
string[] routeInfo = ctlName.Split(‘.‘);
string controller = null;
string action = null;
string id = null;

int iAreas = Array.IndexOf(routeInfo, "Areas");
if (iAreas > 0)
{
//取区域及控制器
Area = routeInfo[iAreas + 1];
}
int ctlIndex = Array.IndexOf(routeInfo, "Controllers");
ctlIndex++;
controller = routeInfo[ctlIndex].Replace("Controller", "");

string url = HttpContext.Current.Request.Url.ToString();
string[] urlArray = url.Split(‘/‘);
int urlCtlIndex = Array.IndexOf(urlArray, controller);
urlCtlIndex++;
if (urlArray.Count() > urlCtlIndex)
{
action = urlArray[urlCtlIndex];
}
urlCtlIndex++;
if (urlArray.Count() > urlCtlIndex)
{
id = urlArray[urlCtlIndex];
}
//url
action = string.IsNullOrEmpty(action) ? "Index" : action;
int actionIndex = action.IndexOf("?", 0);
if (actionIndex > 1)
{
action = action.Substring(0, actionIndex);
}
id = string.IsNullOrEmpty(id) ? "" : id;

//URL路径
string filePath = HttpContext.Current.Request.FilePath;
ChangeMenu(".." + filePath);
}
public void ChangeMenu(string url)
{
using (Navbar_MenuBLL nav = new Navbar_MenuBLL()
{
menu = new Navbar_MenuService()
})
{
if (!string.IsNullOrEmpty(url))
{
Navbar_Menu me = nav.SelectMenuByUrl(url);
if (me != null)
{
if (me.Parent_menu_id == 1)
{
Menu_Operation oper = new Menu_Operation();
oper.Menu_id = me.Nav_menuid;
using (Menu_OperationBLL op = new Menu_OperationBLL()
{
operation = new Menu_OperationService()
})
{
op.AddMenu_Operation(oper);
}
}
else
{
Navbar_Menu m = nav.SelectMenuByID(me.Parent_menu_id);
if (!string.IsNullOrEmpty(m.Menu_url))
{
ChangeMenu(m.Menu_url);
}
else
{
SelectNav(m.Nav_menuid);
}
}

}
}

}
}

public void SelectNav(int pid)
{
using (Navbar_MenuBLL nav1 = new Navbar_MenuBLL()
{
menu = new Navbar_MenuService()
})
{
Navbar_Menu m = nav1.SelectMenuByID(pid);
if (m.Parent_menu_id == 1)
{
Menu_Operation oper = new Menu_Operation();
oper.Menu_id = m.Nav_menuid;
using (Menu_OperationBLL op = new Menu_OperationBLL()
{
operation = new Menu_OperationService()
})
{
op.AddMenu_Operation(oper);
}
}
else
{
SelectNav(m.Parent_menu_id);
}
}
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
}
}
}

改变菜单样式的代码

$.ajax({
type: "POST",
url: "../Shared/GetALLNavbarMenu?" + Math.random().toString(),
data:{navname:""},
success: function (msg) {
$("#nav_menu").empty();
$("#nav_menu").append(msg);
$.ajax({
type: "POST",
url: "../Shared/GetMenu_Operation?" + Math.random().toString(),
success: function (msg) {
if (msg.Menu_id == "" | msg.Menu_id == null | msg.Menu_id == undefined) {
$("#nav_menu>ul>li").eq(2).removeClass("active").addClass("active");
}
$("#nav_menu>ul>li>a").append("<span class=\"selected\"></span>");
$("#nav_menu>ul>li").removeClass("active open");
$("#" + msg.Menu_id).removeClass("active open").addClass("active open");
$("#" + msg.Menu_id).children("ul").css("display", "block");
}
});
App.init();
}
});

});
function ChangeStyle(obj) {
$("#nav_menu>ul>li").removeClass("active");
var title = $(obj).parent().attr("id");
$(obj).parent().removeClass("active").addClass("active");
}
function ChangeliStyle(obj) {
$.ajax({
type: "POST",
url: "../Shared/AddMenu_Operation?" + Math.random().toString(),
data:{menu_id:$(obj).parent().attr("id")},
success: function (msg) {
}
});
}

时间: 2024-07-30 10:03:17

MVC+Bootstrap 企业通用框架搭建--左侧导航菜单的实现(2)的相关文章

MVC+Bootstrap 企业通用框架搭建--左侧导航菜单的实现(1)

导航菜单的实现:Navbar_Menu public class Navbar_Menu { /// <summary> /// 导航菜单编号 /// </summary> private int _nav_menuid; public int Nav_menuid { get { return _nav_menuid; } set { _nav_menuid = value; } } /// <summary> /// 菜单名称 /// </summary>

MVC+Bootstrap 企业通用框架搭建--左侧导航菜单的实现--导航菜单的增删改查(3)

补充上面的点击菜单表信息: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace SqlServer.Entity{ public class Menu_Operation { private int _operation_id; public int Operation_id { get { return

MVC+BootStrap 企业通用型框架搭建 ---(1)框架布局及模板页的创建

本系统使用的ui框架是Bootstrap3.0 布局是使用mvc的模板页面:分[左侧菜单栏目],头部[个人信息任务栏目],尾部[公司信息简介栏目],三大块: 系统搭建:(1)ManagerSystem.DI(控制反转层),ManagerSystem.UI(MVC UI层),ManagerSystem.Utility(通用工具类),SqlServer.BLL(通用业务层),SqlServer.IBLL(父业务层),SqlServer.DAL(数据层), SqlServer.IDAL(父数据层);

MVC+BootStrap 企业通用型框架搭建 ---(2)框架布局及模板页的创建

模板页面介绍 _Header.cshtml头部页面 ,_Footer.cshtml底部页面 ,Main.cshtml框架主页面, _Theme.cshtml(主题页面),_Menu.cshtml(左侧菜单页面),_Style.cshtml(通用样式页面) _Header.cshtml 代码: @{ ViewBag.Title = "_Header";}<script type="text/ecmascript"> $(function () { $(&q

分享基于EF+MVC+Bootstrap的通用后台管理系统及架构(转)

http://www.cnblogs.com/guozili/p/3496265.html 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通用配置及服务调用, 提供了OA.CRM.CMS的原型实例,适合快速构建中小型互联网及行业Web系统,且能作为代码实践及参考,欢迎提出意见. Demo预览 点击在线预览 admin/111111 请勿删数据 Framework 业务无关的底层通用机制及功能 Model基类:提供数据传输和底层的最基本的

分享基于EF+MVC+Bootstrap的通用后台管理系统及架构

原文来源:http://www.cnblogs.com/guozili/p/3496265.html 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通用配置及服务调用, 提供了OA.CRM.CMS的原型实例,适合快速构建中小型互联网及行业Web系统,且能作为代码实践及参考,欢迎提出意见. Demo预览 点击在线预览 admin/111111 请勿删数据 Framework 业务无关的底层通用机制及功能 Model基类:提供数据传输和底层

顶 企业站常用css横向导航菜单

<!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml</a>" lang="zh-CN"><head><m

企业站常用漂亮横向导航菜单

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title&

easyui左侧导航菜单右侧载入百度地图项目框架

代码下载 http://pan.baidu.com/s/1cDht7K 一个左侧是导航菜单,右侧是百度地图的应用: 一 左侧菜单 使用jquery easyui框架:网上下的资源:运行后如下: 二 修改菜单 修改后如下:标注,地理要素,数据管理:这些是GIS功能: 三 jquery  easyui框架是这么用的: 单击左侧不同菜单:链接到不同html文档:就会在右侧显示相应文档: 四 载入百度地图 在其中一个demo2.html中,载入百度地图:效果如下:以后可点击左侧菜单,在右侧增加百度地图应