首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从ASP.NET核心ActionFilter中的ActionExecutingContext对象访问ModelState和和ValueProvider对象

从ASP.NET核心ActionFilter中的ActionExecutingContext对象访问ModelState和ValueProvider对象,可以通过以下方式实现:

  1. 首先,确保在控制器中使用了ActionFilter特性,例如[ActionFilter]或[TypeFilter(typeof(ActionFilter))]。
  2. 在ActionFilter中,可以通过ActionExecutingContext参数来访问Action执行的上下文信息。
  3. 通过ActionExecutingContext的ActionArguments属性,可以获取到Action方法的参数集合。
  4. 使用ActionArguments中的参数名称作为键,可以通过ModelState属性来访问ModelState对象。ModelState对象用于存储模型绑定过程中的验证错误信息。
  5. 同样地,可以通过ActionArguments中的参数名称作为键,通过ValueProvider属性来访问ValueProvider对象。ValueProvider对象用于提供Action方法的参数值。

下面是一个示例代码:

代码语言:txt
复制
public class CustomActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // 访问ModelState对象
        var modelName = "参数名称";
        var modelState = context.ModelState[modelName];
        if (modelState != null && modelState.Errors.Count > 0)
        {
            // 处理模型验证错误
        }

        // 访问ValueProvider对象
        var parameterName = "参数名称";
        var parameterValue = context.ActionArguments[parameterName];
        var valueProvider = context.ValueProvider.GetValue(parameterName);
        if (valueProvider != null)
        {
            // 处理参数值
        }
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // 在Action执行后执行的逻辑
    }
}

在上述示例中,我们通过ActionExecutingContext对象访问了ModelState和ValueProvider对象,并可以根据需要进行相应的处理。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发平台(MTP):https://cloud.tencent.com/product/mtp
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Tencent Real-Time Rendering):https://cloud.tencent.com/product/trr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

asp.net core 系列】10 实战之ActionFilter

0.前言 在上一篇,我们提到了如何创建一个UnitOfWork并通过ActionFilter设置启用。...这一篇我们将简单介绍一下ActionFilter以及如何利用ActionFilter,顺便补齐一下上一篇工具类。 ? 1....1.2 在ActionFilter我们能做什么 我们来简单介绍一下,四个方法四种上下文类型,看一看里面有哪些我们可以利用方法: 1.2.1 ActionExecutingContext 这是一个...、一些参数等,具体用到时候,再为大伙详细说 HttpContext 可以通过这个属性获取此次请求Request和Response对象 ModelState 模型校验信息, 这部分在后续再为小伙伴们细说...当然,在asp.net core 添加了另外一种使用ActionFilter方式,Setup.cs public void ConfigureServices(IServiceCollection

65730
  • 快速入门系列--MVC--04模型

    ASP.NET MVC框架,Model绑定本质上就是为目标Action方法生成参数列表过程,这些参数列表来源可能是请求URL,可能是HTTP请求头或请求体,通过参数元数据信息可以得到相关内容...ParameterDescriptor 其中属性ParameterBindingInfo最为关键,实际包含ModelBinder对象,该对象是整个绑定模块核心,同时Include,Exclude集合用于显示设置参与...ModelState *Model绑定除了设置参数列表以外,还将数据通过ModelState形式存储于ControllerViewData。...然后获得指定ModelBinder,调用GetModel得到由ValueProvider提供相应参数值,最后以ModelState形式保存。     ...接下来,介绍Model绑定与验证关系,在前文"Model绑定"介绍中提到Controller对象ViewData包含ModelState集合,用于表示Model状态,其中既包括ValueProvider

    92550

    Model验证系统运行机制是如何实现

    以及相关提供机制,接下来我们来讨论一下在这个以ModelValidator为核心Model验证系统,通过Model绑定得到数据对象验证是如何实现。...四、 Model绑定与Model验证 一、ModelState谈起 我们知道Controller对象ViewData包含有个元素类型为ModelState集合,用于表示Model...具有Value和Errors两个核心属性,前者表示ValueProvider提供ValueProviderResult对象,后者表示针对该数据对象错误集合,其类型为ModelErrorCollection...我们知道输出ModelState值是在Model绑定过程通过ValueProvider提供,而伴随着Model绑定验证则会根据验证结果对ModelStateModelError进行设置。...(《ASP.NET MVC以ModelValidator为核心Model验证体系: ModelValidatorProviders》),也就是针对Contact对象验证并不会递归地对Address对象属性实施验证

    1.8K110

    ASP.NET Core 2.2 : 十七.Action执行(Endpoint.RequestDelegate后面的故事)

    泳道一:                   就是第一节【概述】描述内容,不再赘述。...,InvokeAsync方法可以看出来,请求会进入筛选器管道进行处理,也就是 Task InvokeFilterPipelineAsync() 方法,借用官方文档一个图看一下 ?                                  ...图三 此图描述了请求经过其他中间件处理后,进入路由处理最终找到了对应action,最终进入筛选器管道进行处理。而这个处理核心部分就是方法 while (!...图四 可以看出,在上面几个Filter执行之后,ActionFilter执行比较特殊,它将Action执行包在了中间,这段逻辑写在了ControllerActionInvoker自己,同样是一个...然后顺序是   ActionFilterOnActionExecuting方法 ->action执行->ActionFilterOnActionExecuted方法, action执行如下:

    74630

    深入探讨ASP.NET MVC筛选器

    ASP.NET MVC筛选器是一种基于AOP(面向方面编程)设计,我们将一些非业务逻辑实现在相应筛选器,然后以一种横切(Crosscutting)方式应用到对应Action方法。...ASP.NET MVC提供了四种类型筛选器(AuthorizationFilter、ActionFilter、ResultFilter和ExceptionFilter),它们对应着相应筛选器接口(IAuthorizationFilter...Filter核心是Instance属性,因为它代表真正实施筛选功能对象,该对象实现了一个或者多个基于上述四种筛选器类型接口。...在实现GetFilters方法,它会根据指定Controller上下文获取对应Controller对象,并以此创建一个Filter(Controller对象作为Filter对象Instance...,并在浏览器上指定正确地址访问定义在HomeControllerAction方法Data,会在浏览器呈现如下图所示结果。

    1.3K80

    ASP.NET MVC以ValueProvider核心值提供系统: ValueProviderFactory

    ASP.NET Model绑定系统,用于提供数据值ValueProvider对象通过ValueProviderFactory来创建。...本篇文章只要介绍基于ValueProviderFactoryValueProvider提供机制,以及如何通过自定义ValueProviderFactory实现我们需要数据值绑定方式。...以ValueProvider核心值提供系统涉及到了三类组件/类型,即用于具体实现数据值提供ValueProviderValueProvider通过ValueProviderFactotry,而...MVC以ValueProvider核心值提供系统: NameValueCollectionValueProvider ASP.NET MVC以ValueProvider核心值提供系统: DictionaryValueProvider...ASP.NET MVC以ValueProvider核心值提供系统: ValueProviderFactory

    1.9K80

    七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

    非管理员用户还是可以直接访问AddNew方法,为了解决这个问题,我们会引入MVC action 过滤器。Action 过滤器使得在action方法添加一些预处理和后处理逻辑判断问题。...什么是 ActionFilter 与AuthorizationFilter类似,ActionFilterASP.NET MVC过滤器一种,允许在action 方法添加预处理和后处理逻辑。...实验24——实现项目外观一致性 在ASP.NET能够保证外观一致性是母版页使用。MVC却不同于ASP.NET,在RAZOR,母版页称为布局页面。 在开始实验之前,首先来了解布局页面 1....现在最大问题是在页眉和页脚移动到布局页面后,如何将数据View传给Layout页面。 解决方案——继承 可使用继承原则,通过实验来深入理解。 1....我们已经知道了使用 ActionFilter一个优点,现在来看看使用 ActionFilter其他好处 1.

    4.9K80

    ASP.NET MVC以ValueProvider核心值提供系统: NameValueCollectionValueProvider

    在进行Model绑定过程,需要根据基于Action方法参数绑定上下文请求数据中提取相应数据以提供相应数据。...ASP.NET MVC将这种基于不同数据来源数据获取/提供机制实现在一个叫做ValueProvider组件。[本文已经同步到《How ASP.NET MVC Works?》...ValueProvider实现了具有如下定义接口IValueProvider,GetValue方法根据指定Key数据源获取对应对象,这个Key是基于当前绑定上下文。...MVC以ValueProvider核心值提供系统: NameValueCollectionValueProvider ASP.NET MVC以ValueProvider核心值提供系统: DictionaryValueProvider...ASP.NET MVC以ValueProvider核心值提供系统: ValueProviderFactory

    1.7K80

    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)

    当Web API在一个控制器调用一个方法时候,它必须为参数设定值,这个过程就叫做绑定。这篇文章描述Web API如何绑定参数,以及如何自定义绑定过程。   ...API试图请求URI获取参数值,这个“item”参数是一个复杂类型,因此Web API试图使用一个媒体格式化器请求消息体来读取参数值。...Using [FromUri]  为了更好让Web APIURI读取复杂类型,添加【FormUri】属性到参数上。...下面的例子定义了一个GeoPoint 类型,紧接着一个控制器方法URI获得这个GetPoint参数。...在这个例子Content-Type是“application/json”,这个请求体是一个原始Json字符串(而不是Json对象)。 至多一个参数被允许消息体读取值。

    1.4K30

    如何使用Serilog.AspNetCore记录ASP.NET Core3.0MVC属性

    在本文中,我将展示如何创建action/page过滤器来为您记录这些属性,以便中间件可以在后续创建日志时访问。 Serilog创建者Nicholas Blumhardt之前已经解决了这个话题。...记录来自MVC其他信息 就目前而言,ASP.NET Core一个特征是许多行为被MVC“基础结构”锁定在了MVC框架内部来实现。端点路由是采用MVC功能并将其下移到核心框架首要工作之一。...ASP.NET Core团队一直在努力将更多MVC特定功能(例如模型绑定或操作结果)MVC移除,然后“下推”到核心框架。...有关此内容更多信息,请参见Ryan Nowak在NDC上对Houdini项目的讨论。 但是,就目前情况而言,MVC内仍然存在一些不容易应用程序其他部分访问特性。...下一节让我们一起探讨下如何Serilog请求记录中排除运行状况检查端点。

    3.6K10

    Asp.Net Core Filter 深入浅出那些事-AOP

    AOP技术利用一种称为“横切”技术,剖解开封装对象内部,将影响多个类公共行为封装到一个可重用模块,并将其命名为Aspect切面。...通过不同Filter可以有效处理封包进出加工,本篇将介绍ASP.NET Core五种Filter运作方式。...2.1 Filter 介绍 ASP.NET Core 有以下五种Filter 可以使用: Authorization Filter:Authorization是五种Filter优先级最高,通常用于验证...} } 四、Asp.Net Core 过滤器注册方式 这一篇章主要来分析探讨Asp.Net Core 过滤器三种注册方式Action、Controller、全局 。...Filter生命周期源自于您如何注册,而TypeFilter每次都会创建一个新实例 TypeFilter 使用方式 代码如下: [TypeFilter(typeof(ExecptionFilter)

    51820

    快速展示原型之Minimal API开发

    view=aspnetcore-7.0 Minimal API 背景介绍 Minimal APIs 是指在 ASP.NET Core 引入一种轻量级 API 开发模式。...在传统 ASP.NET Core ,创建 API 需要定义控制器类和路由配置,并编写一系列动作方法和路由规则。这样开发模式在一些简单场景下可能会显得过于繁琐和冗余。...功能代码示例 在 Minimal API ASP.NET Core 一些功能可以通过简化语法和约定来体现。...在 `POST /api/submit` 端点中,我们使用 `ReadFromJsonAsync()` 方法请求体异步读取 JSON 数据,并将其转换为 `CustomData` 对象。...在应用程序主函数,我们注册了自定义异常处理中间件,并在根路径上抛出一个异常,以模拟应用程序异常情况。当访问根路径时,异常处理中间件将捕获并处理异常,并返回相应错误响应。 ​

    39210

    通过实例模拟ASP.NET MVCModel绑定机制:简单类型+复杂类型

    如下所示是我们自定义DefaultModelBinder,其属性ValueProvider用于请求中提供相应数据值,该属性在构造函数中被初始化。...为了验证我们自定义DefaultModelBinder能够真正地用于针对简单参数类型Model绑定没我们将它应用到一个具体ASP.NET MVC应用。...在通过Visual StudioASP.NET MVC项目模板创建空Web应用,我们创建了如下一个默认HomeController。...1: foo: abc 2: bar: 123.45 二、复杂类型 对于简单类型参数来说,由于支持与字符串类型之间转换,相应ValueProvider可以直接数据源中提取相应数据并直接转换成参数类型...而ValueProvider采用数据源是一个扁平数据结构,它通过基于属性名称前缀Key实现与这个对象对应叶子节点映射。

    1.9K80
    领券