首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在exceptionFilter Asp.NetCore中获取模型对象?

如何在exceptionFilter Asp.NetCore中获取模型对象?
EN

Stack Overflow用户
提问于 2018-06-23 21:42:40
回答 1查看 444关注 0票数 6

我正在使用ASPWebCore2.0中的.NET应用程序,其中有一个继承自ExceptionFilterAttribute的自定义ExceptionAttribute筛选器。

如何访问在POST调用中传递给操作的Model对象。

上面提到的方法被传递了一个ExceptionContext,但是我找不到一种简单可靠的方法来从中获取模型对象并将其传递给ViewResult。

我的过滤器看起来如下所示:

代码语言:javascript
复制
public class ApiCallExceptionAttribute: ExceptionFilterAttribute
{
    private readonly IModelMetadataProvider _modelMetadataProvider;

    public ApiCallExceptionAttribute(
        IModelMetadataProvider modelMetadataProvider)
    {
        _modelMetadataProvider = modelMetadataProvider;
    }

    public override void OnException(ExceptionContext context)
    {
        //how can i accesss model object here and pass to ViewResult
        result.ViewData = new ViewDataDictionary(_modelMetadataProvider,context.ModelState);

        context.Result = result;
    }
}

控制器如下所示:

代码语言:javascript
复制
[HttpPost]
[ServiceFilter(typeof(ApiCallExceptionAttribute))]
public async Task<IActionResult> Activation(ActivationViewModel model)
{
            //throw exception in controller content
}
EN

回答 1

Stack Overflow用户

发布于 2020-06-06 11:12:32

找不到简单的方法来做到这一点。

我将采用的方法是在您的类上也实现IActionFilter

onActionExecuting()中读取模型信息并将其存储在HTTPContext.Items中。

然后在出现异常时从HttpContext.Items中读取它。

克制住将此信息作为私有字段存储在类中的冲动,因为MVC不会为每个请求创建其过滤器的新实例!

代码语言:javascript
复制
 public class LogExceptionFilterAttribute : Attribute, IExceptionFilter, IActionFilter
    {

        public void OnActionExecuting(ActionExecutingContext context)
        {
            context.HttpContext.Items["ActionArguments"] = context.ActionArguments;
        }

        public void OnActionExecuted(ActionExecutedContext context)
        {
        }

        public void OnException(ExceptionContext context)
        {
            var model = context.HttpContext.Items["ActionArguments"];
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51001755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档