【问题标题】:Access [FromBody] from a Custom Attribute从自定义属性访问 [FromBody]
【发布时间】:2019-05-03 04:41:24
【问题描述】:

我有一个 asp.net 核心 MVC 应用程序。 我想创建一个自定义日志属性来跟踪服务器上发生的所有信息。特别是对于那些有 [HttpPost] 和 [FromBody] 的人

例如:

    [AuditLog]
    public async Task<JsonResult> SignIn([FromBody] SignInModel model)

在 AuditLog 中,我想访问 [FromBody] 模型实例。 这可能吗?

【问题讨论】:

  • 我的回答是否提供了足够的帮助来解决您的问题?

标签: asp.net-core


【解决方案1】:

不,在调用 (action) 方法时,您的属性不可能访问参数。

相反,您可以创建一个操作过滤器。在此过滤器中,您可以访问传递的 signInModel 值并检查 [AuditLog] 属性的存在。

类似这样的:

public void OnActionExecuting(ActionExecutingContext context)
{
  var parameters = context.ActionDescriptor.Parameters;
  foreach (ControllerParameterDescriptor p in parameters) {
    var attributes = p.ParameterInfo.CustomAttributes;
    if (
      attributes.Any(a => a.AttributeType == typeof(FromBodyAttribute))
    ) {
      var yourModelValue = context.ActionArguments[p.Name];
      // DO SOMETHING HERE...
      break;
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2012-03-19
    • 2013-01-29
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多