假设我有一个这样的 Controller 方法:
[Audit]
public JsonNetResult List(int start, int limit, string sort, string dir, string searchValue, SecurityInputModel securityData)
{
...
}
和这样定义的属性:
[AttributeUsage(AttributeTargets.Method)]
public class AuditAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
// auditing code here
base.OnActionExecuted(filterContext);
}
}
我可以从 OnActionExecuted() 内部获取 start/limit/sort/etc 的值吗?
最佳答案
您可以使用 ActionExecutingContext.ActionParameters 在 OnActionExecuting
中获取参数值属性(property)。
例如,以下测试属性将参数名称和值写入响应(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);
}
关于c# - 能否从 ActionFilter 中获取方法中使用的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515541/