MVCフィルタ基本使用

9219 ワード


    
Actionフィルタ
/// <summary>

///        

/// </summary>

/// <param name="filterContext"></param>

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

  //1.       action     

  string actionName = filterContext.ActionDescriptor.ActionName;

   filterContext.HttpContext.Response.Write("ActionName=" + actionName + "</br>");

  //2.       action        

  string ctrlName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;

  filterContext.HttpContext.Response.Write("ControllerName=" + ctrlName + "</br>");

  //3.    action      [HttpGet]    

  bool isTrue = filterContext.ActionDescriptor.IsDefined(typeof(HttpGetAttribute), false);

  filterContext.HttpContext.Response.Write("  action    [httpGet]  " + isTrue + "</br>");

  //4.    action     [HttpGet]       

  object[] httpGets = filterContext.ActionDescriptor.GetCustomAttributes(typeof(HttpGetAttribute), false);

  foreach (object obj in httpGets)

  {

  filterContext.HttpContext.Response.Write("    action     [HttpGet]       :" + obj.ToString() + "</br>");

  }

  //5.    action       

  ParameterDescriptor[] dics = filterContext.ActionDescriptor.GetParameters();

  foreach(ParameterDescriptor dic in dics)

  {

  //  action    

  filterContext.HttpContext.Response.Write("    action       :" + dic.ParameterName.ToString() + "</br>");

  }

  base.OnActionExecuting(filterContext);

}

/// <summary>

///        

/// </summary>

/// <param name="filterContext"></param>

public override void OnActionExecuted(ActionExecutedContext filterContext)

{

  base.OnActionExecuted(filterContext);

}

/// <summary>

///        

/// </summary>

/// <param name="filterContext"></param>

public override void OnResultExecuting(ResultExecutingContext filterContext)

{

    base.OnResultExecuting(filterContext);

}

/// <summary>

///        

/// </summary>

/// <param name="filterContext"></param>

public override void OnResultExecuted(ResultExecutedContext filterContext)

{

    base.OnResultExecuted(filterContext);

}

 
 
異常フィルタ:HandleErrorAttribute
public override void OnException(ExceptionContext filterContext)

{

    //1.      

    Exception ex= filterContext.Exception;

    //2.       

    //2.1              ...

    //3.  mvc  ,        ,       

    filterContext.ExceptionHandled = true;

    base.OnException(filterContext);

}

 
 
構成エラー・ページ:
1 <customErrors mode="On" defaultRedirect="Error">

2     <error statusCode="404" redirect="~/ErrorMgr/P404" />

3     <error statusCode="500" redirect="~/ErrorMgr/P500"/>

4 </customErrors>