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、
    本博客是作者在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处。
  • 相关阅读:
    【每天一道PAT】1001 A+B Format
    C++ STL总结
    开篇
    happen-before原则
    java多线程的状态转换以及基本操作
    集合初始容量
    fail-fast机制
    Stack
    Iterator
    Vector
  • 原文地址:https://www.cnblogs.com/gygg/p/14609826.html
Copyright © 2011-2022 走看看