使用SandCastle生成代码注释文档
作者:QiuLiang 日期:2012-4-16
2011总结--致:过去的30年
作者:QiuLiang 日期:2012-3-29
灵活应用js调试技巧解决样式问题
作者:QiuLiang 日期:2012-3-14
在很多时候,前端开发人员使用JS脚本,对页面Dom结构或者是样式做出了修改,会造成一些意想不到的bug。
由于种种原因,例如:代码逻辑复杂、时间久了遗忘处理细节、或者根本就是接手修改别人遗留的bug,在这种情况下,debug就会变成一件头疼的事情。
在此分享一些JS调试方面的技巧,针对各种疑难杂症,往往能起到较好的效果。
Step 1:检查服务器直接render出来的内容
使用查看源文件的方式,这一步首先明确,页面HTML片段是否在服务器端就已经不正常了。
Step 2:比较实际的HTML内容和服务器render出来的原始内容之间的差异
可以使用一些前端工具(例如:IE下的开发人员工具、Firebug、Chrome的开发人员工具等),实时查看当前HTML片段内容
Step 3:在合适的位置增加debugger
例如:先找出大概可能出问题的js代码,在合适的地方加debugger,或者是使用工具增加类似于“在属性被修改时中断”的断点,例如实际的HTML比原始内容多出了一个width属性
Step 4:运行你的页面,进入中断,并检查js调用堆栈(关键的一步)
推荐使用IE支持的Visual Studio调试器(需要先设置IE:取消“禁用脚本调试”),这时基本就能确定是哪个js方法修改了样式
扩展IList对象,实现深拷贝扩展方法
作者:QiuLiang 日期:2012-2-29
利用dynamic解决匿名对象属性不能赋值的问题
作者:QiuLiang 日期:2012-2-17
IE8对JS数组,采用属性遍历的解析差异
作者:QiuLiang 日期:2012-1-6
IE8对JS的数组,采用属性遍历的方法,解析不一样的地方:
有如下的代码
Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert("遍历属性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍历数组");
for ( var i=0;i<tmp.length;i++ ) {
alert(tmp[i]);
}
如果是非IE8浏览器,例如(IE7、IE9、Chrome、FF,仅测试这几种)
通过属性和数组遍历,其结果是一样的。
但对于IE8,结果会有一点小小的差异,在IE8下会把原型链扩展方法当做一个属性输出,大家可以测试一下。
之所以发现这个差异,也是因为解决了一个诡异的bug,有同事在代码里面使用for ( var i in tmp )这种方式来遍历数组的每个元素,如果正好对Array定义了原型链方法,则会发生这个问题。
所以建议:如果遍历数组元素,还是应该采用标准的写法 for ( var i=0;i<tmp.length;i++ )。
Tags: javascript 浏览器兼容性
运用Razor的@helper语法解决View逻辑代码重用的问题
作者:QiuLiang 日期:2011-12-14
ASP.NET MVC 3实现类似于Server.Transfer的效果
作者:QiuLiang 日期:2011-12-8
当我们在使用ASP.NET MVC实现页面跳转的时候,常用的应该是:
- Redirect
- RedirectToAction
- RedirectToRoute
- 或者在前台使用脚本跳转。
但这几种跳转方式都是基于Get请求的,在某些特定场景下可能并不适用。例如需要传递大数据量参数、或者复杂对象类型参数的场景,get方式肯定是有限制的。
Tags: ASP.NET MVC
使用MvcMiniProfiler调试ASP.NET MVC网站性能
作者:QiuLiang 日期:2011-12-1
什么是MvcMiniProfiler?
一款由stackoverflow.com团队开发,专门针对ASP.NET MVC站点进行性能调试的工具,同时,其中的MvcMiniprofiler.EntityFramework组件,能直接输出当前页面执行了哪些SQL语句。
包括以下核心组件:
- MvcMiniProfiler
- MvcMiniProfiler.EntityFramework

Tags: MVC MvcMiniProfiler 性能优化
