摘要:在ASP.NET MVC3里面,一次用户请求是如何开始的呢? 如果下载了MVC的源代码进行调试,一般来说会发现开始于MvcHandler,简单看下MvcHandler的代码,主要就是通过控制器的工厂接受控制器的实例,并使用控制器进行进一步处理,那么MvcHandler是如果被创建,如何被调用执行的? 首先看看MvcHandler的构造函数,是没有无参的构造函数,显然看来MvcHandler单干是有点难度了。直接查找MvcHandler的所有引用,很容易在MvcRouteHandler中可以找到: protected virtual IHttpHandler GetHttpHandler(Req 阅读全文
建议避免将Entity查询结果直接当IEnumerable使用
2011-05-12 22:34 by 落小呆, 3232 阅读, 0 推荐, 收藏, 编辑
摘要:使用Entity Framework查询当然是必不可少的,但有时不小心可能很简单的查询也会导致异常。 下面用EF4.1做个示例简单演示下异常发生的场景: 1: using (var context = new DemoContext()) 2: { 3: var users = context.Users.AsEnumerable(); 4: foreach (var user in users) 5: { 6: //其他查询逻辑 7: var test = context.Users.FirstOrDefault(); 8: } 9: }逻辑比较简单,就是首先查询一个User列表,并当作IE 阅读全文
Moq中带ref参数方法的Callback
2011-04-21 23:14 by 落小呆, 1763 阅读, 1 推荐, 收藏, 编辑
摘要:Moq用来干啥的我想大家都清楚,在此我就不啰嗦,最近在使用的时候,当mock对象的方法的参数带ref关键字时感觉压力很大。 首先来重现一下案发现场,首先定义我们需要mock的接口:1publicinterfaceITestInterface2{3stringTestMethodWithRef(refstringrefStr,stringstr);4}接下来我们mock我们定义的接口的方法TestMethodWithRef,并指定方法被调用之后执行委托操作:1[TestMethod]2publicvoidRef_Param_Test()3{4varmock=newMock<ITestInt 阅读全文
T4+VSIX 打造Visual Studio 2010 中的Entity代码生成自定义工具(下)
2011-03-17 23:21 by 落小呆, 2843 阅读, 2 推荐, 收藏, 编辑
摘要:在上一篇文章中主要介绍了如何开发根据“文本模板”生成代码的自定义工具,后面有人反应说写得比较混乱,看完了也不知道说啥,自己也回头去看了下,文章的讲述的思路确是存在比较大的问题,所以进行了修改,如果还有什么疑问或者意见希望能够提出来,那么接下来继续如果在前面开发的自定义工具的基础上进行修改,变成ADO.NET Entity的实体生成自定义工具。 在这之前首先简单介绍下Entity实体代码生成的过程,打开测试项目,添加新项“ADO.NET 实体数据模型,如下图所示: 点击【添加】按钮后,会提示“选择模型内容”,一种是“从数据库生成”,另外一种是“空模型”,考虑到只是测试实体生成而已,直接选择空模型 阅读全文
T4+VSIX 打造Visual Studio 2010 中的Entity代码生成自定义工具(上)
2011-03-07 23:18 by 落小呆, 3699 阅读, 2 推荐, 收藏, 编辑
摘要:首先简单介绍下T4(Code Generation and Text Templates),也就是有一些文本模板和控制逻辑组成的混合体,可以使用这些模板生成程序中的部分源代码。在Visual Studio中这些模板只是简单的文本而已,那么是如何解析这些文本生成代码文件的呢?生成的关键就在于文件的“自定义工具”属性,在Visual Studio中“文本模板”的后缀为.tt,添加“文本模板”文件,查看文件的属性,会发现“自定义工具”属性值为“TextTemplatingFileGenerator”,如下图所示:尝试修改其他文本文件的“自定义工具”属性为“TextTemplatingFileGene 阅读全文
ASP.NET WebForm MVP(三)- MVP模式应用总结
2011-02-22 00:48 by 落小呆, 690 阅读, 0 推荐, 收藏, 编辑
摘要:通过前面两篇文章,对MVP的基本概念以及简单的应用都有相应的介绍,那么接下来就主要总结一下这一年左右在ASP.NET WebForm中应用MVP模式的一些体会,很多东西看起来的确很美好,但当实际应用的时候往往还有很多问题需要考虑。 实践资料 把这点放在最前面,不是说MVP模式的资料少,随便搜一下还是有很多信息,但别开心太早,仔细看看这些资料就知道为啥我会这样说了,绝大部分都是在讲MVP模式的基本概念、基本应用之类,而且都不忽悠,真的都很基本,通过这些资料去了解下MVP模式还是可以,但作为学习资料或者框架选型的参考资料还是有些“难度”。真要去找点实践经验、应用开发指引之类的资料比较费时间,而且找 阅读全文
ASP.NET WebForm MVP(二)- MVP模式的应用
2011-02-14 23:31 by 落小呆, 714 阅读, 0 推荐, 收藏, 编辑
摘要:上一篇文章主要介绍了MVP模式的一些基本概念,那么接下来主要介绍下MVP模式的使用。前面文章中提到了几个MVP模式的应用框架,但这些框架考虑到易用性、功能全面性等,实现得比较复杂,不是很适合拿来介绍MVP的使用,因此这里通过自己简单实现的MVP模式来介绍MVP模式的使用。在WebForm中使用MVP模式后的业务的实现序列图如下图所示:首先将IView的实例(Page)与Presenter绑定,当用户激发页面事件后,页面激发IView中定义的事件,并通过事件参数传递相关信息提供给已绑定的Presenter;Presenter会根据绑定的事件的响应函数操作业务实体,并获取操作后的业务实体状态,然后 阅读全文
ASP.NET WebForm MVP(一)- MVP模式简介
2011-01-21 08:53 by 落小呆, 1115 阅读, 1 推荐, 收藏, 编辑
摘要:在ASP.NET WebForm MVC框架出来之前,.Net方面的Web应用程序的开发主要是基于Web窗体的框架,基于这种框架的优点主要有: 事件模型。 Web 窗体支持与 Windows 应用程序类似的事件驱动编程模式。 许多事件可用,数百个服务器控件对它们提供支持。 状态管理。 Web 窗体通过使用视图状态和基于服务器的控件降低了状态管理的复杂性。 基于页面的体系结构。 Web 窗体提供了一种体系结构,此体系结构将含声明性标记的页面(.aspx 文件)与添加功能的代码隐藏文件相结合。 通过使用此结构,可以轻松地创建能够执行常规任务(如对用户操作作出响应以及呈现服务器代码中的标记)的页面。 阅读全文
通过Handler实现ASP.NET WebForm自定义控件局部刷新
2011-01-20 01:48 by 落小呆, 903 阅读, 0 推荐, 收藏, 编辑
摘要:看到这样的标题,也许马上会有人说直接用UpdatePanel不就行了,的确在大部分时候使用UpdatePanel就能实现我们需要的业务需求,但UpdatePanel的灵活性很有限,当业务需求比较复杂的时候,过多的使用UpdatePanel会导致页面很复杂,也可能会是页面的实现看起来很别扭,性能有时候也不是那么理想。那么在ASP.NET WebForm里面能否自己实现局部的刷新?要做到页面的Ajax获取服务器资源并不困难,但关键是服务器如何去做到每次只是渲染需要刷新的部分,而不是整个页面,那接下来就介绍如果实现局部(用户自定义控件)的渲染。首先定义渲染用户自定义控件的控制器类,继承Page对象, 阅读全文