尽可能摆脱对HttpContext的依赖
我们继续《ASP.NET MVC单元测试最佳实践》,今天主要谈论HttpContext的依赖问题。 在ASP.NET中进行单元测试的天敌便是HttpContext,它是ASP.NET的核心,极端复杂,却无法进行Mock1——可见微软能够写出那么庞大的ASP.NET框架真不那么容易。现在这个状况改善了...
Publish/Subscribe(发布/订阅)设计模式(Observer模式)
记得已经写过一篇关于(Observer模式), http://www.cnblogs.com/Charles2008/archive/2008/10/06/1305116.html 发布/订阅简称(Pub/Sub)模式,这种Pub/Sub设计模式是observer的一种变体。Observer模式在D...
编写好的JavaScript代码
编好程序的关键是程序是写给人的,不是写给计算机的。如果你能明白其他人或许会阅读你的 JavaScript,你就会写更清晰的代码。代码越清晰,你就越不容易犯错误。机灵的代码是可爱的,但就是这种机灵的代码会产生错误。最好的经验法则是 KISS,即Keep It Simple,Sweetie(保持简单,可...
请别埋没了URL Routing
本文做法不甚妥当,更好的做法请参考:《对Action方法的参数进行双向转化》实现分析 既然Model Binder机制有着明显的缺陷,那么我们又该如何处理这样的问题呢? 我们再来回顾一下目前问题:对于从URL中表现出来的参数,我们可以把URL Routing捕获到的数据使用Model Binder进...
IE7下用ajax动态填充select框的一个问题
症状:如果你采用了ajax来动态填充内容,在填充select的时候,页面上有两个select并排,如果填充的内容长度超过默认的长度,则在IE7下不会自动扩展后面一个select框的位置。如图所示第一排:解决办法:我这里用的jQuery来填充数据,在填充之前,将后面的select的visibility...
Model Binder机制的缺陷
在ASP.NET MVC中,每个请求都被映射到一个Action方法,而Action方法的参数由Model Binder根据Request中的数据转化而成。例如,URL Routing将Request URL解析成数据——这往往是一个字符串,然后该字符串可以被转换一个整型的值;还有可能是从服务器端PO...
为ASP.NET MVC RC分离Controllers-Views项目后添加“脚手架”功能(二)
上一篇《为ASP.NET MVC RC分离Controllers-Views项目后添加“脚手架”功能(一)》 中讲到如何分离Controllers和Views项目,并且为Controllers项目添加MVC RC的“脚手架”,可惜“脚手架...
为ASP.NET MVC RC分离Controllers-Views项目后添加“脚手架”功能(一)(已添加MVC2.0及MVC3.0更新)
连续忙了好几个月,好久没有写东西了,最近稍微有点空,空闲的时候回到了对ASP.NET MVC RC(以下简称MVC RC)的研究上来。MVC RC的“脚手架(Scaffold)”功能可以说为MVC RC的开发如虎添翼,不过应用到真实的开发环境中似乎存在一些遗憾的地方:很多时候我们并不希望把Model...
尽可能地使用强类型数据
我们继续来谈《最佳实践》,这次的主题便是“强类型”。 一直说C#是强类型语言,通俗地讲,便是指C#中的“变量”在开发时的类型便是明确的:String便是String,Int32就是Int32,毫无争议。强类型的好处有很多,张嘴便可随意举上几例: 能够享受代码提示功能 能够获得重构工具的支持 能...
再接再厉VS 2008 sp1 + .NET 3.5 sp1系列文章索引
[源码下载]再接再厉VS 2008 sp1 + .NET 3.5 sp1系列文章索引作者:webabcd介绍再接再厉VS 2008 sp1 + .NET 3.5 sp1系列文章索引:ADO.NET Entity Framework(实体框架), ADO.NET Data Services(数据服务)...
对ASP.NET MVC项目中的视图做单元测试
关于视图的单元测试 说到ASP.NET MVC,我们似乎始终都在关注对于Controller的测试——虽然Stephen Walther也写过如何脱离Web Server对View进行单元测试,但是他的方法可看而不可用。复杂的构造和预备,以及对生成的HTML字符串作判断——这真是在对视图做单元测试吗...
ASP.NET MVC单元测试最佳实践
这是我在上周“.NET技术大会”上的主题Session。作为一个技术,例如语言或框架,为了确保有能力应付各种情况,以及天生的限制能力不足(例如弱类型语言无法限制数据类型),必然可以“组合”成无穷无尽的使用方法。而最佳实践,便是所有用法的子集——而且很有可能是非常小的子集。通过最佳实践,我们的程序一般...
再接再厉VS 2008 sp1 + .NET 3.5 sp1(8) - Dynamic Data(动态数据)
[索引页][源码下载]再接再厉VS 2008 sp1 + .NET 3.5 sp1(8) - Dynamic Data(动态数据)作者:webabcd介绍以Northwind为示例数据库,演示Dynamic Data(动态数据) MetaModel - 数据库和域对象之间的映射的抽象MetaMode...