基础版:
1.定义:
public class MyActionFilter :Attribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext context)
{
}
void IActionFilter.OnActionExecuting(ActionExecutingContext context)
{
//写业务逻辑处理,【例子:只有uid=2,才能获取数据,否则跳转到其他页面(404)】
var r = context.HttpContext.Request.Query.TryGetValue("uid", out StringValues value);
if (r && value.First() == "2")
{
}
else
{
context.HttpContext.Response.Redirect("/Error/404");
}
}
}
2.使用:
[MyActionFilter]
public ActionResult List(int? page, int? uid, int type = 2)
{
//写获取数据的代码
}
升级版:
1.定义:
[Serializable, AttributeUsage(AttributeTargets.Method)]
public class MyActionFilter : Attribute, IActionFilter
{
public string Uid { get; set; }
void IActionFilter.OnActionExecuted(ActionExecutedContext context)
{
}
void IActionFilter.OnActionExecuting(ActionExecutingContext context)
{
//写业务逻辑处理,【例子:只有uid=1或3才能获取数据,否则跳转到其他页面(404)】
var r = context.HttpContext.Request.Query.TryGetValue("uid", out StringValues value);
if (r && Uid.ToString().Split(',').FirstOrDefault(p => p.Equals(value.First())) != null)
{
}
else
{
context.HttpContext.Response.Redirect("/Error/404");
}
}
}
2.使用:
[MyActionFilter(Uid = "1,3")]
public ActionResult List(int? page, int? uid, int type = 2)
{
//写获取数据的代码
}