首页 新闻 搜索 专区 学院

asp.net mvc能不能在任何请求之前执行自己的代码

0
[已解决问题] 解决于 2014-07-29 12:13

重写控制器的BeginExecute只是当前控制器的任何请求之前可以写自己的代码,现在要所有请求

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:50
提问于:2014-07-28 21:50
< >
分享
最佳答案
0

asp.net管道里所有在进入MVC流程之前的事件.beginrequest事件比如

MVC里有全局过滤器.自定义控制器类型.

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:28831 | 2014-07-29 09:56

你是说在这里RegisterGlobalFilters()?

拖鞋王子 | 园豆:50 (初学一级) | 2014-07-29 11:47

@拖鞋王子: 上面这是2个解决方案``

1.在MVC流程钱的管道事件,一般就是beginrequest事件

2.mvc的全局过滤器,

吴瑞祥 | 园豆:28831 (高人七级) | 2014-07-29 12:08

@吴瑞祥: 第二个方案是FilterConfig的RegisterGlobalFilters()里面添加一个全局过滤器吧?

拖鞋王子 | 园豆:50 (初学一级) | 2014-07-29 12:09

@拖鞋王子: 是的.

吴瑞祥 | 园豆:28831 (高人七级) | 2014-07-29 12:12
其他回答(3)
0

写一个子类继承自Controller,重写 BeginExecute 方法,然后你的所有控制器继承你所定义的子类。

faib | 园豆:167 (初学一级) | 2014-07-28 23:04

这样也要每个控制器去继承,没有更更简单的办法

支持(0) 反对(0) 拖鞋王子 | 园豆:50 (初学一级) | 2014-07-29 11:45
0

public class RoleFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session[ClientFilter.ClientUserKey] == null)
{
filterContext.HttpContext.Response.StatusCode = 401;
filterContext.HttpContext.Response.End();
}
}
}

[RoleFilter]

public class BaseController : Controller

{

}

想要逗逼的码农 | 园豆:120 (初学一级) | 2014-07-29 09:26

这样也要每个控制器加上这个过滤器,没有更更简单的办法

支持(0) 反对(0) 拖鞋王子 | 园豆:50 (初学一级) | 2014-07-29 11:45

@拖鞋王子: 只要控制器继承BaseController就行了

public partial class AdminController : BaseController
{


    public ActionResult SaveCompany()
    {

    }

}

想不到更简单了

支持(0) 反对(0) 想要逗逼的码农 | 园豆:120 (初学一级) | 2014-07-29 11:49
0
public class LoginAjaxFilter : BaseAuthorizeAttribute
    {
        /// <summary>
        /// 1001:用户未登录
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            string path = GetRequestPath(filterContext);
            if (filterContext.HttpContext.IsNotNull()
                && filterContext.HttpContext.Session.IsNotNull()
                && filterContext.HttpContext.Session[CacheKey.SESSION_LOGIN_ADMIN].IsNull())
            {
                filterContext.Result = new ContentResult() { Content = "90001" };
            }
        }
    }


-----------------------------------
public class BaseAuthorizeAttribute : AuthorizeAttribute



---------------------------------------
[LoginFilter]
        public ActionResult UserList()
        {
            ViewBag.RoleList = BaseHelper.GetRoleList(string.Empty);
            ViewBag.DepartList = BaseHelper.GetDepartList(string.Empty);
            return View();
        }
贺臣 | 园豆:107 (初学一级) | 2014-07-29 09:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册