• 委托delegate与Dictionary实现action选择器


    原文地址:http://www.sufeinet.com/thread-3102-1-1.html

    委托delegate与Dictionary实现action方法调用
    大家一定都有这种情况,
    1.前台页面信息是通过Ajax请求的方法加载的;
    2.或者是通过请求本页面加载的;
    3.请求的页面不仅仅是一个Http请求
    在 这咱情况下我们一般会加一个action的参数,用于区别是应该调用那个方法
    前台的发起我就不多说了,这个大家都知道,关键是后台应该怎么写呢。
    通常情况下一般是这样的

    //取出action的值
    string action = context.Request["action"];
    if (action == "post1")
    {
       //调用第一个Post方法
    }
    else if (action == "post2")
    {
       //调用第一个Post方法
    }
    else if (action == "post3")
    {
       //调用第一个Post方法
    }
    else
    {
       //调用在没有找到action对应方法时执行
    }

    我感觉这种情况是比较多的,其实而可以使用Dictionary与delegate配置的方法来实现。
    意思就是把方法生成一个List形式的,
    我一直是这么用的,今天正好看到 同事也是这么写的,所以就拿出来给大家分享一下。因为我发现还有少人在用第一种方式
    算是给大家提供一个解决方案吧。
    大家看如下代码就明白了

     //定义一个委托
        private delegate void actionByMain(HttpContext context);
        //定义一Key,Value的键值对,大家注意这里把委托放进去了
        private static Dictionary<string, actionByMain> mainList = new Dictionary<string, actionByMain>();
        public void ProcessRequest(HttpContext context)
        {
            string action = string.Empty;
            if (string.IsNullOrEmpty(context.Request["action"]))
            {
                return;
            }
            action = context.Request["action"];
            //先检查一下有没有这个action
            if (mainList.ContainsKey(action))
            {
                mainList[action](context); return;
            }
        }
        //添加action对应方法的列表
        static void addMainList()
        {
            mainList.Add("post1", delegate(HttpContext context)
           {
               context.Response.Write("成功");
           });
            mainList.Add("post2", delegate(HttpContext context)
          {
              context.Response.Write("成功");
          });
            mainList.Add("post3", delegate(HttpContext context)
          {
              return;
          });
        }

    好了大家看看这种方法

    本人的博客不再维护从2013年就不再维护了 需要我帮助的朋友请到我的个人论坛 http://www.sufeinet.com 进行讨论,感谢大家对我的支持!
  • 相关阅读:
    django 静态文件模版上传下载配置
    drf ModelViewSet之匹配路由参数
    Django drf序列化外键关联表ID以为字段
    Django 自关联递归序列化模块 django-rest-frame-recursive模块
    Python利用Psycopg2模块将Excel表格数据导入Postgressql
    PyTorch中view的用法
    P1113 杂务 【拓扑排序】
    P3916 图的遍历 【反向建图+DFS】
    P2814 家谱【map型的并查集】
    P1102 A-B 数对【map】
  • 原文地址:https://www.cnblogs.com/sufei/p/3075178.html
Copyright © 2020-2023  润新知