繁体   English   中英

从基本控制器获取操作过滤器列表

[英]Getting action filters list from base Controller

简而言之:有没有人知道从基本控制器获取应用于当前执行操作的actionFilters列表的方法?

Long:我正在使用ASP.NET MVC 1.0框架。 我有一个“RequireSSL”actionFilter,我已经重新创建了签出,但是,如果有人离开结账并返回商店,我想将它们转发回非安全版本的网站。

它在基本控制器(我使用继承自默认控制器的自定义基本控制器)中有用,以找出正在应用于当前操作的actionFilters。

我可以将其包含在global.asax.cs中,我想,这里的任何指导都将不胜感激。

谢谢

您可以创建ActionFilter并实现OnActionExecuting。 通过此属性,您可以重定向它们。

public sealed class MyRedirectAttributeAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        if (!filterContext.ActionDescriptor.IsDefined(typeof(RequireSSLAttribute), true))
        {
            filterContext.HttpContext.Response.Redirect("~/Controller/Action");
        }

        base.OnActionExecuting(filterContext);
    }
}true

好吧,这就是我最终结果......

 public sealed class HandleConnectionSecurityAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase req = filterContext.HttpContext.Request;
        HttpResponseBase res = filterContext.HttpContext.Response;

        if (!filterContext.ActionDescriptor.IsDefined(typeof(RequiresSSL), true) && HttpContext.Current.Request.IsSecureConnection)
        {
            var builder = new UriBuilder(req.Url)
            {
                Scheme = Uri.UriSchemeHttp,
                Port = 80
            };
            res.Redirect(builder.Uri.ToString());
        }

        base.OnActionExecuting(filterContext);
    }
}

然后我为我创建的SuperController添加了一个action属性。

[HandleConnectionSecurity]
公共类SuperController:控制器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM