不喜欢说废话,直接了当:

1、控制器

 /// <summary>
/// 获取列表
/// </summary>
/// <returns></returns>
public ActionResult GetRoleList()
{
return View();
} public string GetListF(int id)
{
List<CM_Menu> list= _menuService.GetListF(id);
string html = "";
if (list.Count > )
{
foreach (var item in list)
{
html += "<li><button onclick=GetMenu(" + item.Id + ") class='button'>" + item.Name + "</button>";
}
}
return html;
}
/// <summary>
/// 子菜单加载(权限)
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public string GetListSon(int id)
{
//权限判断
CM_Info_Role roleModel = Session["InfoRole"] as CM_Info_Role;
string role = roleModel.Role;
List<CM_Menu> list= _menuService.GetListSon(id);
string html = "";
if (list.Count > )
{
for (int i = ; i < list.Count;i++ )
{
int temp = Convert.ToInt32(list[i].ShowName.Replace("role", "").Trim());
if (role.Substring(temp, ) == "")
{
html += "<li><a href='" + list[i].URL + "' target='_blank' >" + list[i].Name + "</a></li>";
}
else
{
html += "";
}
}
}
return html;
}

2、ajax

function bodyonload() //加载的是父ID为0的,即最主要的菜单
{
var data = 0;
$.ajax({
type: 'post',
async: false,
data: { id: data },
url: '/Menu/GetListF',
dataType: 'html',
success: function (json, textStatus) {
$("#MenuListF").append(json);
},
complete: function (XMLHttpRequest, textStatus) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$.messager.alert("失败提示", textStatus);
}
});
//GetMenu(0);//初始化加载0的
} function GetMenu(fid)//获取
{
$.ajax({
type: 'post',
async: false,
data: { id: fid },
url: '/Menu/GetListSon',
dataType: 'html',
success: function (json, textStatus) {
//if (!$("#MenuListSon").has("li").length) {
// $("#MenuListSon").append(json);
//}
//else {
$("#MenuListSon > *").remove();
$("#MenuListSon").append(json);
//}
},
complete: function (XMLHttpRequest, textStatus) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$.messager.alert("失败提示", textStatus);
}
});
}

3、页面

 <div id="head_wrap" class="container_12">
<div id="logo" class="grid_4">
<h1><span>logo</span></h1>
</div>
<div id="controlpanel" class="grid_8">
<ul>
<li><p><strong>你好,用户名</strong></p></li>
</ul>
</div>
<div id="navigation" class=" grid_12">
<ul id="MenuListF">
</ul>
</div>
</div><!-- end headwarp -->

  在大神面前来说,这就是个菜,但是加载这个菜单的时候,可能因为新手的缘故,对自己解决问题还是挺满意的。

  解释一下:

  控制器里面其实就是输出html字符串,ajax里面的就是加载一下这个字符串。页面调用显示

  

int temp = Convert.ToInt32(list[i].ShowName.Replace("role", "").Trim());
if (role.Substring(temp, ) == "")
{
html += "<li><a href='" + list[i].URL + "' target='_blank' >" + list[i].Name + "</a></li>";
}
else
{
html += "";
}

这里其实就是我的权限判断了,我觉得这样做的话后台代码也没有那么容易暴露,因为这个权限是基于 User、Menu、Role做的,我觉得这个思路就是这个样子

MVC+ajax权限管理的更多相关文章

  1. MVC之权限管理-网站开发之路

    一.前言 刚到公司没多长时间就开始接触MVC到现在不能说懂了,只能说到达会用这个层次吧,感觉MVC用来写Web还是很强大的,层次清晰. 今天我来写写关于权限管理这一块,自我感觉网站的权限主要分为菜单权 ...

  2. MVC中权限管理

    权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少.权限管理几乎出现在任何系统里面,只要有用户和密码的系统.权限管理还是比较复杂的,有的固定到某个模 ...

  3. asp.net mvc的权限管理设计

    现在集中展示用户-角色-权限管理的功能,因此,所有数据表一律简化处理.   1 后台管理效果 (1)角色管理 (2)权限管理   2 数据库设计(MSSQL) (1)用户表dbo.Users 项 类型 ...

  4. 朴素的标题:MVC中权限管理实践

    基于MVC的web项目最好的权限控制方式我认为是对Action的控制,实现思路记录于此,权限管理分成两个部分授权.认证. 一.授权 1.读取当前项目中的所有需要控制的Action /// <su ...

  5. ASP.NET MVC 用户权限-1

    MVC框架的开发网站的利器,MVC框架也开始越来越流行了.对于.NET ,微软也发布了MVC框架,做网站通常要涉及到用户的权限管理,对于.NET MVC 框架的用户权限管理又应该怎样设置呢?下面通过示 ...

  6. 用最基本的EF+MVC+JQ+AJAX+bootstrap实现权限管理的简单实例 之登陆和操作权限

    先来一堆关于上篇文章的废话(不喜者点此隐藏) 今天把博客加了个小功能,就是点标题可以隐藏或展示相关内容,做法很傻,就是引用了bootstrap的两个css类和全部的js文件,其实这样的小功能完全应该自 ...

  7. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理4

    首先先加个区域,名为Admin using System.Web.Mvc; namespace AuthorDesign.Web.Areas.Admin { public class AdminAre ...

  8. Asp.Net Mvc通用后台管理系统,bootstrap+easyui+权限管理+ORM

    产品清单: 1.整站源码,非编译版,方便进行业务的二次开发 2.通用模块与用户等基础数据的数据库脚本 3.bootstrap3.3.1 AceAdmin模板源码 4.easyui1.3.5源码 5.F ...

  9. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

随机推荐

  1. Orcal学习

    sqlplus有几种登陆方式 比如:1.C: > sqlplus "/as sysdba" --以操作系统权限认证的oracle sys管理员登陆2.C: > sqlp ...

  2. SQL Server 2008 数据库镜像部署实例之三 配置见证服务器

    SQL Server 2008 数据库镜像部署实例之三 配置见证服务器 前面已经完成了镜像数据库的配置,并进行那个了故障转移测试.接下来将部署见证服务器,实现自动故障转移. 一.关于见证服务器 1.若 ...

  3. 子类实例化和Super

    在子类的构造函数当中,必须调用父类的构造函数,通过super的参数个数和类型来决定调用父类哪一个构造函数. class Student extends Person{ Student(){ super ...

  4. Hibernate工作原理

    现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力.当应用程序对于处于Session管理下的POJO实例执行操作时,Hibernate ...

  5. (Array)27. Remove Element

    Given an array and a value, remove all instances of that value in place and return the new length. D ...

  6. IOS 关于扬声器和听话筒的设置 ----自己试验过的,可以达到扩音器和听筒播放的效果

    今下午项目中使用到了 扬声器和听筒的设置,我项目中是这样的,有一个聊天设置,聊天设置有一个使用扬声器 播放声音的设置. 这个设置是,当你打开那个开关的话,你在聊天中都可以根据你的使用来任意的播放声音, ...

  7. safari渲染Transition动画不流畅问题

    用css3的transition过渡来做页面动画的时候,发现在chrome和ff流畅,在safari 不流畅: 度娘找到了淘宝UED的一个类似解决方案,动画就流畅了. 测试环境: win7 32bit ...

  8. 在一般处理文件中访问Session需要添加IRequiresSessionState(转载)

    原文:http://blog.csdn.net/cdsnaspnet/article/details/5695625s 通常我们经常,通过session判定用户是否登录.还有一些临时的.重要的数据也尝 ...

  9. Java系列笔记(1) - Java 类加载与初始化

    目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...

  10. Java项目导出war包 security alert:integrity check error”

    操作方法: 首先下载这个jar包 http://pan.baidu.com/s/1sk5uDzf 1.需要先把common/pluns 下的com.genuitec.eclipse.export.wi ...