委托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;
});
}
委托delegate与Dictionary实现action选择器的更多相关文章
- C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC View中获取action、controller、area名称、参数
C# -- 等待异步操作执行完成的方式 C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] ...
- C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别
以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...
- [.NET] C# 知识回顾 - 委托 delegate (续)
C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...
- Delegate、Predicate、Action和Func
写在前面 Delegate Predicate Action Func 逆变和协变 先说下什么是委托(Delegate),委托在C#中是一种类型,和Class是一个级别,但是我们经常把它看做是一个方法 ...
- 为什么不能把委托(delegate)放在一个接口(interface)当中?
stackoverflow上有人问,为什么不能把委托放在一个接口当中? 投票最多的第一个答案第一句话说,“A Delegate is just another type, so you don't g ...
- c# 委托 delegate
委托是一种存储函数引用的类型,在事件和事件的处理时有重要的用途 通俗的说,委托是一个可以引用方法的类型,当创建一个委托,也就创建一个引用方法的变量,进而就可以调用那个方法,即委托可以调用它所指的方法. ...
- 委托和lambda表达式,Action和Func
1.为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托. 接下来我们有个需求,就是调用一个方法,取出1-1 ...
- [C#] C# 知识回顾 - 委托 delegate
C# 知识回顾 - 委托 delegate [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6031892.html 目录 What's 委托 委托的属性 ...
- C# 委托Delegate(一) 基础介绍&用法
本文是根据书本&网络 前人总结的. 1. 前言 定义&介绍: 委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的 ...
随机推荐
- html_outputer.py
coding=UTF-8 # HTML输出器 import sys class htmlOutputer(): def __init__(self): self.data = [] def colle ...
- tomcat7 配置 https安全访问
在apache-tomcat-7.0.33-windows-x64.zip配置https,结果在配置SSL时遇到一些问题 1.用JDK自带的keytool来生成私有密钥和自签发的证书,如下: keyt ...
- TouTiao开源项目 分析笔记5
1.深入理解RxJava 1.1.基本上现在的APP都会有请求网络,然后处理回调的业务吧. 如果请求的数据很多,业务越来越复杂,怎么处理呢? 这里我用到了RxJava来帮我处理业务. RxJava主要 ...
- 20,Django contenttypes 应用
contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 1.创建一个项目 2.数据库迁移,生成默认表. 3.存着所 ...
- P3817 小A的糖果(洛谷月赛)
P3817 小A的糖果 题目描述 小A有N个糖果盒,第i个盒中有a[i]颗糖果. 小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖 ...
- .NET非常棒的开源项目,给你意想不到的东西!
http://www.cnblogs.com/Leo_wl/p/4560146.html
- 你的第一个自动化测试:Selenium 自动化测试
前言: 让你掌握自动化测试暂时脱离手工点点点,本章节让你掌握 Selenium 如何定位.判定.操作元素(实现业务逻辑) 一. 前期准备 1.准备以下工具 1.Selenium下载地址:立即下载 2. ...
- Python编码、流程控制、格式化输出
Python编码 初始编码: 电脑的传输,还有储存,实际上都是010101010 ASCII码: (American Standard Code for Information Interchange ...
- 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务
孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...
- Qt(1)
Qt Qt开发图形界面软件,可以跨win.linux.mac平台.移动端,使用c++开发 Qt采用所见即所得的UI设计(UI设计和代码是联动的),GUI界面编辑信号和槽,由开发环境自动生成c++代码, ...