[英]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.