alp*_*ogg 11 c# parameters action-filter
假设我有一个像这样的控制器方法:
[Audit]
public JsonNetResult List(int start, int limit, string sort, string dir, string searchValue, SecurityInputModel securityData)
{
...
}
Run Code Online (Sandbox Code Playgroud)
以及如此定义的属性:
[AttributeUsage(AttributeTargets.Method)]
public class AuditAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
// auditing code here
base.OnActionExecuted(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以从OnActionExecuted()里面得到start/limit/sort/etc的值吗?
Jef*_*ata 11
您可以OnActionExecuting使用ActionExecutingContext.ActionParameters属性获取参数值.
例如,以下test属性将参数名称和值写入响应(ItemModel类覆盖ToString只输出其2个属性):
public class CustomActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var response = filterContext.HttpContext.Response;
response.Write(filterContext.ActionDescriptor.ActionName);
response.Write("<br/>");
foreach (var parameter in filterContext.ActionParameters)
{
response.Write(string.Format("{0}: {1}", parameter.Key, parameter.Value));
}
}
}
[CustomActionFilter]
[HttpPost]
public ViewResult Test(ItemModel model)
{
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
