gpt4 book ai didi

c# - 能否从 ActionFilter 中获取方法中使用的参数值?

转载 作者:可可西里 更新时间:2023-11-01 08:44:36 24 4
gpt4 key购买 nike

假设我有一个这样的 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.ActionParametersOnActionExecuting 中获取参数值属性(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);
}

alt text

关于c# - 能否从 ActionFilter 中获取方法中使用的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com