Asp.net MVC3.0 基于不同的角色显示不同的菜单

前面提到过用Asp.net MVC3.0正在做一个问答系统性质的论坛。前期把菜单全部显示以方便测试模块功能。现在正在完善,加上角色模块,然后不同的角色登陆系统会看到不同的菜单栏,还有就是游客(未登录用户)看到的菜单栏。网上也搜到了几篇关于动态显示菜单的文章,不是很喜欢,动态显示菜单,我感觉不如静态的爽快,而且动态的从数据库中取出菜单项,本身就是耗时间的事情,加上写在数据库中还需要维护,而且菜单也没那么多,都是一定的,也不需要动态扩展,决定用静态的。

     由于后台都是自定义的AuthorizeAttribute和Role,所以不能用Asp.net MVC3.0内置的User.IsInRole()和Roles.IsUserInRole()来判断登陆用户的角色信息。所以只能自己添加了。

     所做项目的菜单是在Layout中显示的,所以先在Layout中稍作修改,这是一个小例子,将

<div id="menucontainer"><ul id="menu"><li>@Html.ActionLink("Home", "Index", "Home")</li><li>@Html.ActionLink("About", "About", "Home")</li></ul>
</div>

改为

<div id="menucontainer"><ul id="menu">@{Html.RenderAction("你的菜单Action名字", "你的菜单Controller名字");}</ul>
</div>

其中@Html.RenderAction是通过Controller中的Action来调用用户控件,将Action对应的View当做Partial部分显示在调用处。

然后建立对应的菜单的Controller和Action。(你也可以先建立菜单Controller和Action)

分别命名为TestMenuController和Menu。

using System.Collections.Generic;
using System.Web.Mvc;namespace test.Controllers
{public class TestMenuController : Controller{//// GET: /TestMenu/public ActionResult Menu(){List<Role> _testroles = new List<Role>();/*根据User.Instance.Name或者你登陆的时候将你的用户信息放入Session中,取出,然后根据用户, 获取你自己定义的role信息*///将角色名称放入List<string>中List<string>  roles = new List<string>();return PartialView(roles);}}
}

建立对应的Menu.cshtml,选中PartialView。

在Menu.cshtml中加入如下代码

@model IEnumerable<string>
@{this.Layout = null;
}
@if(Model.Count()>0&&Model.Contains("角色名称")){你想要显示的菜单;
}
....................此处省略,大体代码如此,自己写。

差不多就这样子了。如果要求菜单动态扩展的话,那也很容易改。同样的道理。

转载于:https://www.cnblogs.com/tianzibobo/archive/2013/01/07/role_menu.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Mesos:编写您自己的分布式框架

在上一篇文章中 &#xff0c;我们了解了mesos是什么&#xff0c;它如何有用&#xff0c;并开始使用它。 在本文中&#xff0c;我们将看到如何在mesos上编写自己的框架。 &#xff08;在mesos中&#xff0c;框架是在其上运行的任何应用程序。&#xff09;本文介绍了一个名为“ m…

jquery可见性选择器(综合)

<!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"><head><title>可见性选择器</title>…

LoadRunner如何监控Linux下的系统资源

前一段时间在研究LoadRunner过程中&#xff0c;在进行压力场景测试中通过LoadRunner来实时监控windows的系统资源&#xff0c;在前几节中我已经总结了相关过程&#xff0c;近段时间发现群里有朋友问如何监控Linux下的系统资源&#xff0c;所以我也就此问题搭建了一些的Linux环境…

页面跳转多种方法(加传参)

onclick"javascript:location.href/HelpCenter/HelpCenter/" <a href"/HelpCenter/HelpCenter">帮助中心</a>点击页面返回上一页&#xff1a; onclick"javascript:window.history.go(-1); *********************************************…

log4j的使用

文章出处&#xff1a;http://www.blogjava.net/zJun/archive/2006/06/28/55511.html 首先&#xff0c;要在项目classpath下建立log4j.properties 1. 配置文件 #配置根Logger log4j.rootLogger [level], appenderName1, appenderName2, …#配置日志信息输出目的地Appender log4…

使用@Rule在JUnit中测试文件和目录

多亏了TemporaryFolder Rule在JUnit中使用文件和目录进行测试很容易。 在JUnit中&#xff0c;规则&#xff08; Rule &#xff09;可以替代或设置夹具设置和清除方法&#xff08; org.junit.Before &#xff0c; org.junit.After &#xff0c; org.junit.BeforeClass和org.jun…

jquery简单原则器(匹配索引为指定值的元素)

<!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"><head><title>简单选择器</title>&l…

POJ-1664 放苹果 动态规划思想解组合数学

该题说明了状态开设的意义一样,但是从哪个方向去理解推倒状态的转移对解题非常关键.该题扣住是否所有的盘子中有空盘子,就得到了一个非常简单且优美的方程.如果从当前盘子的放置状态或者是当前苹果的放置状态来求解状态转移方程就不能写出来.这和题意中的相同盘子,相同苹果有很…

JCG学院开设了Java设计模式课程!

自从我们推出JCG学院以来&#xff0c;已经有一段时间了。JCG学院是一个基于付费内容的高级订阅网站&#xff0c;提供有关最新技术的课程&#xff0c;涵盖从RedSQL数据库&#xff08;如Redis和CouchDB&#xff09;到使用Android进行移动开发的最新知识。 当然&#xff0c;与Jav…

用友异常清理工具

此类工具网上很多&#xff0c;但&#xff0c;网上的病毒千千万万&#xff0c;还是自己开发使用较为放心。而且具体执行了什么也一清二楚&#xff0c;可以放心。 此工具适用大部份版本&#xff0c;从U821至U871&#xff0c;包括U6系列。 转载于:https://www.cnblogs.com/wuxi15/…

JVM因“ OutOfMemory”错误而关闭-我该怎么办?

看起来似乎很神奇&#xff0c;但是在有关JVM设置的搜索请求结果中经常显示这种“从深度”的呼喊。 您可能会遇到“我记得该选项&#xff0c;但如何启用它”的问题&#xff0c;而有时&#xff08;主要是半年一次&#xff09;管理服务器或调整虚拟设备&#xff0c;而又除主要任务…

jquery层级原则器(匹配后代元素div)

<!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"><head><title>层级 </title><met…

输入焦点默认指示在编辑框上

mfc 对话框(模态)中有一编辑框控件 如何在显示对话框时 将输入焦点默认指示在编辑框上呢&#xff1f; 2011-05-11 11:40 提问者&#xff1a; 绝岭雄风 我来帮他解答 满意回答2011-05-11 11:42对话框上按ctrlD 出来后先点那个编辑框控件 使得那个空间的排序为1号即可 追问太感谢…

JBoss Data Virtualization 6.1 Beta现在可用

JBoss 数据虚拟化 &#xff08;JDV&#xff09;是一种数据集成解决方案&#xff0c;位于多个数据源的前面&#xff0c;并允许将它们视为一个源。 做到这一点&#xff0c;它提供了数据抽象&#xff0c;联合&#xff0c;集成&#xff0c;转换和交付功能&#xff0c;可将来自一个或…

hibernater面试一

什么是Hibernate的并发机制&#xff1f;怎么去处理并发问题&#xff1f; Hibernate并发机制&#xff1a; a、Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次, 然后就丢弃。 如果一个Session 实例允许共享的…

使用Spring Boot和MongoDB创建REST API

Spring Boot是一个自以为是的框架&#xff0c;可简化Spring应用程序的开发。 它使我们摆脱了复杂配置文件的束缚&#xff0c;并帮助我们创建了不需要外部servlet容器的独立Spring应用程序。 这听起来实在令人难以置信&#xff0c;但Spring Boot确实可以完成所有这一切 。 这篇…

Oracle用 odp.net 时出现 Oracle.DataAccess.Client.OracleConnection的类型初始值设定项引发异常 问题的解决...

在初次使用 Oracle 时&#xff0c;用ado.net连接数据&#xff0c;出现 “Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常 的提示&#xff1a; 解决方法&#xff1a;将对应版本的 OraOps11W.dll 拷到应用程序目录。 转载于:https://www.cnblogs.com/pp…

如何将Jersey集成到Spring MVC应用程序中

我最近开始使用Java为Podcastpedia.org和JAX-RS实现构建公共的REST API&#xff0c;我选择了Jersey &#xff0c;因为我发现它“自然”且功能强大-您可以通过遵循教程了解更多信息-带有Jersey和Spring的Java中的REST API设计和实现。 由于Podcastpedia.org是由Spring MVC支持的…

点击显示底框颜色,默认显示第一个。

页面初始化显示第一个底框颜色&#xff0c;点击另一个第一个底框颜色消失&#xff0c;被点击的底框颜色显示&#xff0c;以此循环。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional…

简单用于测试的listview的视图

http://www.iteye.com/topic/540423转载于:https://www.cnblogs.com/ct732003684/archive/2013/01/21/2869376.html