zoukankan      html  css  js  c++  java
  • 过滤器判断请求参数中是否含有某一字段

    最近遇到一个需求,在执行Controller方法时,需要判断该方法的请求参数中是否含有某一字段,有则赋值,在实际开发过程中应该是常见的,本篇博客介绍如何使用过滤器的方式来完成该需求。

    新建过滤器RequestModelFilter

    public class RequestModelFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            //获取controller请求参数对象
            var obj = context.ActionArguments.Values.FirstOrDefault();
    
            if (obj != null)
            {
                //判断参数对象中是否含有ShopId
                PropertyInfo _findedPropertyInfo = obj.GetType().GetProperty("ShopId");
                if (_findedPropertyInfo != null)
                {
                    //创建请求对象实例
                    var aimData = Activator.CreateInstance(obj.GetType());
                    //判断请求对象是否继承请求基类BaseRequestModel
                    if (aimData is BaseRequestModel)
                    {
                        aimData = obj;
                        //拿到session给参数赋值
                        ((BaseRequestModel)aimData).ShopId = 
                            Convert.ToInt32(context.HttpContext.Session.GetInt32("ShopId"));
                        //设置参数对象的值
                        context.ActionArguments["model"] = aimData;
                    }
                }
            }
    
            base.OnActionExecuting(context);
        }
    }
    

    在需要判断请求参数中是否有ShopId字段的Controller或方法中加入 RequestModelFilter过滤器 即可完成该需求

    End!

    作者:Wahaha、
    本博客是作者在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处。
  • 相关阅读:
    spring注解-事务
    docker 安装
    docker 简单介绍
    jupyter配置
    docker 桌面镜像内安装gui程序启动报错
    Linux下安装matlab
    拉取cmake镜像并测试
    桌面镜像安装gui程序
    docker + pycharm 运行
    docker + vscode 运行
  • 原文地址:https://www.cnblogs.com/gygg/p/14609826.html
Copyright © 2011-2022 走看看