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 性能优化
序:关于Web性能优化的一些思考
作者:QiuLiang 日期:2011-11-22
Did you know ?信息大爆炸的时代
作者:QiuLiang 日期:2011-9-9
Entity Framework 4.0 的一个bug :DefaultValue问题
作者:QiuLiang 日期:2011-9-7
其实是一个很常用的场景:某个字段比如是不可为空bit型的,在数据库里设置了默认值为1,对应的属性类型自然是bool. 使用VS2010的模型编辑器更新了Model信息后,进行插入测试,没有对该字段赋值,因为是不可空bool类型,我们知道,在new这个对象的时候,如果没有显示指定,该属性一定是false的。但因为数据库设置了默认值,所以我们希望的结果应该是true。但实际的结果却是false,说明,数据库的默认设置在EF下没起作用。 解决方案:
Tags: Entity Framework
基于ASP.NET MVC 3的企业应用项目总结
作者:QiuLiang 日期:2011-8-27
为期三个月的开发加测试工作终于告一段落了,这是我们团队第一次采用ASP.NET MVC(直接使用最新的MVC 3)开发企业应用,期间碰到了很多问题,但在大家的努力下,也都一一解决,先简单介绍一下项目情况吧,是公司的一套业务运营系统,总的从技术实现难度来 讲,没有什么特殊的地方,只有相关部分的业务逻辑算法比较复杂。项目开始前,最大的风险在于整个team除了另外一名同事和我使用过MVC,其他人都是第 一次使用,并且另外那名同事在项目开始一个月左右离职了~~!好在通过大量的交流沟通、code review、内测等手段下,项目基本成功完成。
一、技术架构介绍
基于.Net的多层解决方案,web框架采用了微软的ASP.NET MVC 3(视图引擎为Razor),数据层采用Entity Framework 4.0。界面组件方面使用了Telerik for MVC版本,JS框架依然是强大的JQuery。 系统提供了中、英两套语言版本,采用微软官方推荐的多语言解决方案,该方案很容易扩展其他语言版本。
Tags: ASP.NET MVC 3 项目总结
