前言

在使用时需要修改命名空间、需要过滤控制器、需要过滤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. 10、Spring Boot分布式

    1.分布式简介  2.Zookeeper和Dubbo  3.zookeeper (1).zookeeper安装 官方文档:https://hub.docker.com/_/zookeeper?tab= ...

  2. C语言讲义——函数递归

    函数直接或间接调用自身 每次调用必须获得一些进展,进一步靠近目标 达到目标就不再调用自身 阅读递归函数不要纠缠于执行过程,而是相信递归函数会顺利完成任务 例:阶乘 0! =1(0 的阶乘定为1) 1! ...

  3. JQuery案例:折叠菜单

    折叠菜单(jquery) <html> <head> <meta charset="UTF-8"> <title>accordion ...

  4. 使用Git,10件你可能需要“反悔”的事

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...

  5. Android的Toolbar(含溢出菜单设置[弹出菜单的使用])的使用PopMenu的样式

    http://blog.csdn.net/yingtian648/article/details/52432438(转载) 1.在Toolbar.xml中设置弹出菜单的风格(app:popupThem ...

  6. Generalizing from a Few Examples: A Survey on Few-Shot Learning 小样本学习最新综述 | 三大数据增强方法

    目录 原文链接:小样本学习与智能前沿 01 Transforming Samples from Dtrain 02 Transforming Samples from a Weakly Labeled ...

  7. mysql中innodb引擎的mvcc机制和BufferPool缓存机制

    一.MVCC (1)mvcc主要undo日志版本链和read-view一致性视图来保证多事务的并发控制,mvcc是innodb的一种特殊机制,他保证了事务四大特性之一的隔离性(原子性,一致性,隔离性) ...

  8. 《Machine Learning in Action》—— Taoye给你讲讲Logistic回归是咋回事

    在手撕机器学习系列文章的上一篇,我们详细讲解了线性回归的问题,并且最后通过梯度下降算法拟合了一条直线,从而使得这条直线尽可能的切合数据样本集,已到达模型损失值最小的目的. 在本篇文章中,我们主要是手撕 ...

  9. CSS初识- 选择器 &背景& 浮动& 盒子模型

    # CSS初识-目标: > 1. 学会使用CSS选择器 > 2. 熟记CSS样式和外观属性 > 3. 熟练掌握CSS各种基础选择器 > 4. 熟练掌握CSS各种复合选择器 &g ...

  10. Kubernetes-21:Apiserver等证书修改使用年限

    Kubernetes证书使用年限修改方法   Kubernetes的apiservice.crt证书默认只有一年的使用期限,查看方法: cd /etc/kubernetes/pki [root@Cen ...