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、
    本博客是作者在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处。
  • 相关阅读:
    vue 开发环境搭建
    签名算法
    MySQL explain执行计划优化
    查看运行时某个java对象占用JVM大小及通过idea查看java的内存占用情况
    jenkins 配置
    CSS布局
    《JavaScript 代码优化指南》
    JavaScript 跨域漫游
    iFrame 功能详解
    粘性的底部布局
  • 原文地址:https://www.cnblogs.com/gygg/p/14609826.html
Copyright © 2011-2022 走看看