前言

在使用时需要修改命名空间、需要过滤控制器、需要过滤Action方法。
结果生成表的插入语句。

代码

public ActionResult ReloadData()
{
#region 获取所有的控制器类
System.Text.StringBuilder sbSql = new System.Text.StringBuilder();
List<Type> controllerTypes = new List<Type>(); //创建控制器类型列表
var assembly = System.Reflection.Assembly.Load("Qshds.Controllers.Manage"); //加载程序集
controllerTypes.AddRange(assembly.GetTypes().Where(type => typeof(IController).IsAssignableFrom(type) && type.Name != "ErrorController")); //获取程序集下所有的类,通过Linq筛选继承IController类的所有类型
foreach (var controller in controllerTypes)//遍历控制器类
{
var actions = controller.GetMethods().Where(method => method.ReturnType.Name == "ActionResult"); //获取控制器下所有返回类型为ActionResult的方法,对MVC的权限控制只要限制所以的前后台交互请求就行,统一为ActionResult
foreach (var action in actions)
{
var catt = action.CustomAttributes.Where(x => x.AttributeType.Name == "FunctionFilter").ToList();
if (catt.Count > 0)
{
var s1 = catt[0].NamedArguments[0].TypedValue;
var s2 = catt[0].NamedArguments[1].TypedValue;
var s3 = string.Format("/{0}/{1}/", controller.Name.Replace("Controller", ""), action.Name);
sbSql.AppendFormat("INSERT INTO A_GetAllAction(NAME,Code,Url,Sort,ActionType,[CHECK],InsertTime) VALUES('{0}','{1}','{2}',0,0,1,getdate())"
, s2.ToString().Replace("\"您当前没有", "").Replace("的权限!\"", "")
, s1.ToString().Replace("\"", ""), s3);
}
}
}
var res = sbSql.ToString();
#endregion
return new RedirectResult("/Action/" + Request.Url.Query);
}
CREATE TABLE [dbo].[A_GetAllAction]
(
[ActionID] [SMALLINT] IDENTITY(1,1) NOT NULL,
[Name] [NVARCHAR](25) NULL,
[Code] [CHAR](6) NULL,
[Url] [NVARCHAR](50) NULL,
[Sort] [SMALLINT] NULL,
[ActionType] [INT] NULL,
[Memo] [NVARCHAR](200) NULL,
[Check] [SMALLINT] NULL,
[InsertTime] [SMALLDATETIME] NULL,
[ModifyTime] [SMALLDATETIME] NULL
) ON [PRIMARY]

获取Web项目中的控制器类以及类中Action方法的更多相关文章

  1. Spring中获取web项目的根目录

    spring 在 org.springframework.web.util 包中提供了几个特殊用途的 Servlet 监听器,正确地使用它们可以完成一些特定需求的功能; WebAppRootListe ...

  2. 【Maven】【IDEA】在idea中开发web项目,解决maven的jar包冲突的方法

    在idea中开发web项目,解决maven的jar包冲突的方法 第一步: 先对项目进行 clean ,再进行install 第二步: 出现NoSuchMethodException,ClassNotF ...

  3. 获取 web 项目的绝对路径

    获取 web 项目的绝对路径 <% String path = request.getContextPath(); String basePath = request.getScheme()+& ...

  4. Java获取web项目路径

    File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...

  5. Cocoa编程中视图控制器与视图类详解

    iPhone编程规则是:一个窗口,多个视图.UIView是iPhone屏幕上很多控件的基础类.每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView ...

  6. iOS CoCoa编程中视图控制器与视图类(转)

    分类: iPhone2012-05-28 11:19 837人阅读 评论(0) 收藏 举报 cocoa编程iosuinavigationcontrolleruiviewiphone iPhone编程规 ...

  7. WEB项目构建优化之自动清除CSS中的图片缓存

    在web项目构建发布时,经常遇到css中图片的修改优化,那么如何清除图片的缓存成为必须要解决的问题.曾经有过傻傻的方法就是直接在图片后面添加随机数.今天主要是从构建自动化方式来解决这个问题,提高开发及 ...

  8. Java 获取Web项目相对webapp地址

    例如, import java.io.File; import java.io.FileInputStream; import javax.servlet.http.HttpServletReques ...

  9. IDEA Maven Web项目 clone到本地导入到Eclipse中,启动服务器的时候会出现这个错误:SEVERE: Exception starting filter [hiddenHttpMethodFilter]

    背景(Background): 我将一个IDEA的maven web项目clone到本地,并导入到Eclipse中. I imported a MAVEN WEB project which was ...

随机推荐

  1. Linux三剑客grep、awk、sed

    何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...

  2. Linux没有netstat和ifconfig命令问题

    安装了精简版命令行centos7系统,运行netsta查看端口和ifconfig查看IP命令都提示找不到命令. 解决方法: yum search ifconfig 通过yum search 这个命令我 ...

  3. H5 ,Css实现了你的logo

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 【NOIP2017提高A组模拟9.17】猫

    [NOIP2017提高A组模拟9.17]猫 题目 Description 信息组最近猫成灾了! 隔壁物理组也拿猫没办法. 信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数) ...

  5. Spring Cloud 学习 (二) Ribbon

    负载均衡是指将负载分摊到多个执行单元上,常见的负载均衡有两种方式:一种是独立进程单元,通过负载均衡策略,将请求转发到不同的执行单元上,例如 Ngnix:另一种是将负载均衡逻辑以代码的形式封装到服务消费 ...

  6. 这可能是最为详细的Docker入门总结

    写在前面 毕设是关于区块链的,自然就用到了docker,感觉到了docker的强大.学习源于总结,所以找了一些资料,这篇文章原作写的不错,看了好多遍哈哈. 这可能是最为详细的Docker入门总结 市面 ...

  7. 5.3 Spring5源码--Spring AOP使用接口方式实现

    Spring 提供了很多的实现AOP的方式:Spring 接口方式,schema配置方式和注解. 本文重点介绍Spring使用接口方式实现AOP. 使用接口方式实现AOP以了解为目的. 更好地理解动态 ...

  8. 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Update 更新操作过程

    ☞ ░ 前往老猿Python博文目录 ░ 一.Nchf_OfflineOnlyCharging_Update消息交互过程 Nchf_OfflineOnlyCharging_Update消息是是5G融合 ...

  9. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件的currentWidget和widget方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget的每个选项卡都有一个对应的页面部件对象,可用通过currentWidget方法和 ...

  10. 自学linux——21. NFS服务器的搭建

    NFS服务器的搭建 1.NFS的认识 NFS(Network File System即网络文件系统)服务最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享文件,可以将远程 Linu ...