迭戈

博客园 首页 新随笔 联系 管理

2011年4月18日 #

摘要: Web开发中不可避免的要防止XSS,防止XSS当然要进行Encode(这里是广义,表示Encode和过滤掉特殊标签,下面不再解释),分为输出和输入。各有用处,比如,您提交保存并显示一块内容,那么多数情况下,您需要对输出进行Encode;对于搜索功能,您需要对查询条件进行(输入)Encode,例如:当在查询参数里面输入<scrpit>之类的东西时候您可能需要去掉它,得到所谓安全的参数,也就是查询id=111和查询id=111><script>出来的结果是一样的。我今天暂时尝试了对输入进行Encode。MVC里面有一个机制非常有用,您可以利用它完成很多事情---Mod 阅读全文
posted @ 2011-04-18 12:51 Will Meng 阅读(1771) 评论(6) 推荐(3) 编辑

2011年3月31日 #

摘要: 项目中碰到的问题,或多或少的记录下来,一是积累,二是各位大牛给提供更好的建议。1、HtmlHelper中的Link您在开发web程序的时候很有可能会定义一个执行JavaScript的伪链接(这是我起的名字),例如:<a href="javascript:void(0)" onclick="alert('hello world')">Click me</a>之所以我喊它为伪链接是因为它并不会跳转页面(当然那种定义location.href的除外)。问题出现在这个伪链接并不是一成不变的,是根据数据状态来确定的,例如,当 阅读全文
posted @ 2011-03-31 23:14 Will Meng 阅读(2157) 评论(8) 推荐(2) 编辑

2011年3月1日 #

摘要: 引子:电子商务网站支付功能页面往往会有很多信息,对于这些信息的保存,往往是分步完成的,那么使用Ajax最合适不过了,比如其中的收货人信息模块。这些信息的新建和编辑保存都是用Ajax来完成的。那么有几种方式完成这个操作呢,我想到如下几种。先来看看该功能的截图:一般情况下这些信息会对应一个实体类,就命名为:ReceiverInfo,简单起见,我定义ReceiverInfo如下:1、将需要的值拼接成json文本,再Action里面处理首先您需要将要保存的值拼接成一个json文本,类似:var test = "{ ReceiverId: 5, ReceiverName: 'will& 阅读全文
posted @ 2011-03-01 23:56 Will Meng 阅读(4690) 评论(5) 推荐(11) 编辑

2011年2月22日 #

摘要: 摘要:本人用ASP.NET MVC开发网站已经有半年的时间了(半年的web开发经验,之前没有做过web开发,呵呵),项目中摸爬滚打,多少也积累了一些经验。写出来,一是自己的总结,二是各位大拿给提提意见。1、关于页面中有多个Submit按钮的实现。 如果您的view要显示一些列表,那么对应的URL可能是这样:/Product/List,view的名字就是List,如果您对应的Action名称也使用List,显然不是很明智,因为这个Action使用一个动词的形式更好,比如:GetList,那么您就需要用到ActionNameAttribute,对于的Action写成这样[ActionName(&q 阅读全文
posted @ 2011-02-22 16:19 Will Meng 阅读(3398) 评论(5) 推荐(7) 编辑

2011年2月19日 #

摘要: 这是在项目中使用的生成Excel的一个方法(其实是我在网上收集),用了半年时间,并未出现异常情况。近日当我再次使用该方法生成Excel的时候出现了问题,先看一下方法(其中略去了一些判断和扩展):生成Excel老代码到这个时候我想应该有朋友能看出来问题所在了。这个方法生成Excel数据量不大的时候不会出现问题,当数据量变大之后问题就出来了。因为方法里面定义了一个string类型的变量,将需要填充到Excel的内容叠加。对于string类型的数据使用+=操作相当于使用string.Concat方法连接字符串。每当进行一次+=操作的时候就会生成一个新字符串。必然会开辟一块内存,这样的操作一多就会把内 阅读全文
posted @ 2011-02-19 13:32 Will Meng 阅读(1998) 评论(8) 推荐(3) 编辑

2010年3月15日 #

摘要: 我从来没有进行过正式的web开发,但是我一直喜欢web,所以这篇文章也是我转行web的一个开始吧。或多或少我也参考了几个网站的实现(当然了,只是看看大概的功能而已),所以也请大家多多指教。该购物车的功能如下:1. 通过ajax实现添加和删除车上的物品。2. 删除的物品会显示出来,可以重新添加到购物车。3. 嗯...没有了,具体大家接着看吧。购物车的结构我打算用一个table来展示,在UserCon... 阅读全文
posted @ 2010-03-15 08:40 Will Meng 阅读(3989) 评论(26) 推荐(2) 编辑

2010年2月23日 #

摘要: 项目中有新的需求,用Tree来显示远程服务器相应磁盘的所有目录。并对选定的文件或者文件夹进行操作。对于如何连接远程服务器并读取目录信息并用Tree显示不是这次总结的重点。对文件或者文件夹的操作包括新建,复制,剪切,删除(这里包括永久删除和删除到回收站)。等等,不是已经有File类和Directory类里面的好多静态方法可以实现上面的功能吗?对,上面提到的静态方法的确已经很大程度的满足了我们的需求,... 阅读全文
posted @ 2010-02-23 10:56 Will Meng 阅读(3193) 评论(11) 推荐(0) 编辑

2010年1月17日 #

摘要: 对于Try catch finally,大家应该都不陌生,您接触的写法可能会是下面的记几种类型:Try catch (您可以匹配多个catch)[代码]Try finally[代码]Try catch finally (同样,你一样可以匹配多个catch)Try catch finallyCode highlighting produced by Actipro CodeHighlighter (... 阅读全文
posted @ 2010-01-17 22:23 Will Meng 阅读(5842) 评论(16) 推荐(1) 编辑

2009年12月8日 #

摘要: 这应该是这个文章的最终版本了,期间犯了不少错误,也学习到了不少东西。  不多说了,直接上代码。还是我最后的测试结果,代码很简单,不解释了。[代码]表达式树构建和缓存:[代码]测试结果:[代码]之所以这么测试,是因为Activator.CreateInstance()方法使用了缓存机制,所以对于表达式树创建对象也使用了缓存,没有新东西,只是一个总结而已。至于为什么Activator.CreateIn... 阅读全文
posted @ 2009-12-08 22:02 Will Meng 阅读(2967) 评论(8) 推荐(1) 编辑

2009年12月7日 #

摘要: 之所以要测试这个方法,是因为项目中要使用该方法动态创建需要对象。    上次说了方法Activator.CreateInstance()创建对象和直接用表达式创建对象的性能比较。被老赵等大牛批评测试方法不对,我决定再测试一下,测试环境和第一次一样。  测试代码如下(其中Form1就是新建的一个WinForm,什么代码都没有写): 代码 Code highlighting produced by A... 阅读全文
posted @ 2009-12-07 22:11 Will Meng 阅读(7055) 评论(13) 推荐(0) 编辑