从自定义属性访问 [FromBody]
Posted
技术标签:
【中文标题】从自定义属性访问 [FromBody]【英文标题】:Access [FromBody] from a Custom Attribute 【发布时间】:2019-05-03 04:41:24 【问题描述】:我有一个 asp.net 核心 MVC 应用程序。 我想创建一个自定义日志属性来跟踪服务器上发生的所有信息。特别是对于那些有 [HttpPost] 和 [FromBody] 的人
例如:
[AuditLog]
public async Task<JsonResult> SignIn([FromBody] SignInModel model)
在 AuditLog 中,我想访问 [FromBody] 模型实例。 这可能吗?
【问题讨论】:
我的回答是否提供了足够的帮助来解决您的问题? 【参考方案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;
【讨论】:
以上是关于从自定义属性访问 [FromBody]的主要内容,如果未能解决你的问题,请参考以下文章
如何从自定义用户控件 WPF、C# 中的枚举自定义属性中获取值?