ASP.NET MVC:创建 ModelBinder 自动 Trim 所有字符串
用户输入的字符串前后的空格会对程序造成很大的危害,最常见的问题就是查询和统计错误。作为严谨的开发人员,我们应该主动进行处理。 逐个 Trim 相当麻烦 .NET 中为我们提供了三个字符串处理函数,相信大家一定都用过:Trim、TrimStart、TrimEnd。 但在实际应用中,逐个 Trim 是相当麻烦的。我们来分析下,请看如下 Controller 及其 Model: public c
http://cyqdata.cn/cnblogs/article-detail-9282
ASP.NET MVC Preview 5 演示Demo #6 实现MvcContrib的Html.CheckBoxList()应用
ASP.NET MVC Preview 5 演示Demo #6 实现MvcContrib的Html.CheckBoxList()应用
ASP.NET MVC Preview 5 演示Demo系列: http://mike108mvp.cnblogs.com
ASP.NET MVC QQ交流群1:1215279 QQ交流群2:1214648 QQ交流群3:47788243(可
http://cyqdata.cn/cnblogs/article-detail-8961
利用Attribute实现的 MVC动态表单
一、何谓动态表单
最近再做一个项目,运营只是初步确定了功能,再加上项目比较复杂,所以我不好确定数据库结构
我随时有可能在某个表中加一个属性…
这时候,如果我有2个页面,分别是 Create 和 Edit,那我就需要对这两个页面进行修改~
如果是更多的页面怎么办?
那为何不根据Model,自动生成表单呢?
网上查到一篇文章,是利用外部XML文件,好吧,我承认
http://cyqdata.cn/cnblogs/article-detail-8557
WebMatrix教程(一) (关注WebMatrix–Microsoft 的最新武器:建立你的第一个WebMatrix网站)
“除非你睡着了或刚刚从一个长假回来,你应该已经注意到了,…,微软重新进入到了'高效率开发者’的圈子中。” – Scott Willhite – Director of Community Programs from DotNetNuke
微软是这样定义WebMatrix -- 一个全新的网络开发工具,涵括了你所需所有网站开发
http://cyqdata.cn/cnblogs/article-detail-7762
将自创建的UserControl转换成可供其他网站项目使用DLL文件,内附源码
最近看到几个人问以上问题,在这里给个参考答案,但是具体的情况要具体处理,因为在Usercontrol中实现的功能可能会需要一些特殊的条件,比如它依赖于一些其他的类或者资源,那么大家要小心对待,需要debug的时候,看复杂程度决定是否继续下去还是干脆写个Custom Controls。
A 生成DLL文件
1. 让我们首先创建一个新项目(如果你已经有一个网站,可以直接打开),创建一个Web User
http://cyqdata.cn/cnblogs/article-detail-7298
使用iostream封装TCP Socket
一、如何使用iostream TCP连接是面向流的连接,这一点与iostream 要表达的概念非常吻合。在使用阻塞Socket处理数据时,如果能借用iostream已经具备的强大的字符串流处理功能,是不是可以简化我们某些地方的程序设计呢?比如说需要在服务端和客户端之间某种类的对象,我们可以重载ostream与之的<<操作符和istream与之的>>操作符,这样使用操作符直
http://cyqdata.cn/cnblogs/article-detail-7096
实战 CruiseControl.NET+NAnt(一)- 简介
作者:Tony Qu
首先,我们先回顾下过去我们是怎么构建build server的。
大部分人最先想到的肯定是bat还有Windows系统的计划任务,确实,这两个东西在过去谁也离不开谁,bat充当脚本引擎,计划任务充当触发器。但在实际操作中我们发觉bat的能力是有限的,需要很多辅助的工具,因为它没办法像高级语言一样直接访问系统组件,比如需要用vbscript来访问adsi、访问com对象、控制I
http://cyqdata.cn/cnblogs/article-detail-6064
Struts2的注解功能
我们知道通常情况下,Struts2是通过struts.xml配置的。但是随着系统规模的加大我们需要配置的文件会比较大,虽然我们可以根据不同的系统功能将不同模块的配置文件单独书写,然后通过<include>节点将不同的配置文件引入到最终的struts.xml文件中,但是毕竟还是要维护和管理这些文件,因此也会给维护工作带来很大的困扰。为了解决这个问题,可以考虑使用struts2的注解。实际
http://cyqdata.cn/cnblogs/article-detail-6060
Windows Phone 7 不温不火学习之《Control Toolkit--静态和动态的ContextMenu》
跟大部分智能手机一样,Windows Phone 7 也有上下文菜单,比较典型的比较可以拿Android 的上下文菜单做比较,都是需要用户长按某一Element (Android 称为某一View)时才会弹出一个菜单项。作为一个辅助的控件,它只能辅助于某一单于控件,而不能设置为在某一布局。这点和Android 有点小差别,Android 允许上下文菜单在任何时间长按某一单元或者称为VI
http://cyqdata.cn/cnblogs/article-detail-4849
最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
接上一篇:最短路径算法—Bellman-Ford(贝尔曼-福特)算法分析与实现(C/C++)
Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。
Dijkstra算法是很有
http://cyqdata.cn/cnblogs/article-detail-4604
Prism之Bootstrapper
在程序中使用框架必然要有一个切入点,框架会在这里进行初始化,处理相关配置信息等。在Prism中扮演这一角色的就是Bootstrapper。
Prism提供了一个抽象基类Bootstrapper,这个类里面包含了包含了许多空的虚方法,可以重写它们添加自己的逻辑。这个基类与任何容器无关,所以可以通
http://cyqdata.cn/cnblogs/article-detail-4334
轻量级Web开发平台WebMatrix全球发布!邀您一起在线收看发布会,免费下载安装WebMatrix!
微软已于今天凌晨在美国举行了WebMatrix发布大会,宣布新一代Web开发平台WebMatrix全球正式发布。WebMatrix将为开发站点提供一种简单的方式,开发者利用WebMatrix平台集成的代码编辑器和数据库编辑器,将使得网站优化、服务器管理、搜索优化、FTP发布,以及更多操作都变得灵活简单。关于更多的WebMatrix的介绍,可以通过http://www.microsoft.com/w
http://cyqdata.cn/cnblogs/article-detail-3738
Struts2、Spring、Hibernate整合ExtJS
SSHExtTree 百度文库提供下载:http://wenku.baidu.com/view/485e4d36f111f18583d05aed.html 开标题就知道是Struts、Spring、Hibernate、ExtJS的Tree实例文档,其中包括Filter功能的checkNodeTree、comboBoxCheckNodeTree、comboBoxTree这三种扩展的tree。不错,如
http://cyqdata.cn/cnblogs/article-detail-2819
确保try...finally...和using会执行完毕
说到c#中的try...finally...和using我想大多数人都不会陌生,这两个结构在C#中起着至关重要的作用,就是在程序抛出异常的时候仍然能够确保程序执行完某一部分代码,对于try...finally...就是在try块抛出异常时,确保仍然执行finally块中的代码,对于using就是在using块中的代码在抛出异常时,仍然执行在using上声明的对象的接口IDisposable.Dis
http://cyqdata.cn/cnblogs/article-detail-2701
关于C# 中的Attribute 特性
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !i
http://cyqdata.cn/cnblogs/article-detail-2616
CSS3:transform与transition背后的数学原理
(很多同学看到大段的数学公式就会发昏,我以人格担保,这里面的数学公式简单的不能再简单了......)
transform的原理是计算机图形学中的2D矩阵变换,
在开始之前,首先来复习下一个简单的线性代数知识:矩阵与向量乘法。太复的用不到,只需要3维向量与3x3矩阵的乘积:
接下来我们来说说transform跟矩阵乘法的关系,我们的任何一个html元素渲染完成后可以得到一张位图,把这张位图上所有的点都做一次矩阵运算,将得到一张的新的位图,这就是transform的基本含义。
首先来看最简单的transform,translate。我们都知道tansform:translate(tx,ty);的基本含义是将一个元素的显示位置平移tx,ty。在矩阵变换中,translate体现为下面的矩阵运算:
tansform:scale(sx,sy);将一个元素拉伸或者压缩指定的倍数,它对应的矩阵变换是
http://cyqdata.cn/cnblogs/article-detail-2264
C#特性Attribute的实际应用之:代码统计分析
日常工作中,需要为程序集提供统计分析:
1:程序集方法数;
2:开发人员数目及各自所开发或REVIEW的方法数;
3:测试中,被标注有BUG的数目;
4:直接查看方法的IL代码;
鉴于以上统计的需要,特开发本EXE。
1:关于特性Attribute的知识补充
"Attribute是一种可由用户自由定义的修饰符(Modifier),可以用来修饰各种需要被修饰的目标"。它的作用是为它们的修饰目标追加上一些额外的信息——比如"这个类是我写的"或者"这个函数以前出过问题"等等。
它跟注释的区别是:注释是对程序源代码的一种说明,主要目的是给人看的,在程序被编译的时候会被编译器所丢弃,因此,它丝毫不会影响到程序的执行。而Attribute是
http://cyqdata.cn/cnblogs/article-detail-2263
vc2010 std::tr1 bind库捉虫记
前两天发现了VC2010 tr1库中bind实现的一个bug,当时只是作了记录,没有详细分析.但作为一个QA,不找出问题所在实在不算称职,于是就有了这篇捉虫记.
闲言少叙,书归正传,tr1库就不多作介绍了,有兴趣的同学可以去 wikipedia上看.bind,顾名思义,就是把参数与函数绑定,以利于我们进行函数式编程,是从boost的bind库引入的,对bind不是很了解的可以看陈硕同学的这篇
以boost::function和boost:bind取代虚函数
假定笔者是 vc2010的QA,在做bind的功能测试,开始用gtest写test case, (笔者一般用gtest作为C++测试框架,就写到文章中了,但ms肯定不会用啦.笔者不在ms,请勿对号入座)
先写几个简单的函数供测试之用. Code highlighting produced by Actipro CodeHig
http://cyqdata.cn/cnblogs/article-detail-2232
你碰到过StreamReader.Peek的异常情况
工作中有个需求需要采集每个服每天用户的登录信息、道具使用情况等(用来做数据分析),这些信息、数据
是通过技术那边的Http接口来获取,为了提高效率,节省流量,没有用XML或JSON格式的输出(数据量比较
大,用XML格式或JSON格式或增加许多冗余的信息,优劣暂且不讨论),而是用简单的文本形式,Http接口
数据的输出的格式如下:
1:不同记录以"\r\n"分隔
2:不同字段以“|||”分隔
举个例子(假设),用户每天的登录信息:
字段排列顺序为: GameID|||UserID|||UserName|||ServerID|||ServerName|||IP|||RegistedFrom
|||FromSiteUrl|||LoginTimes|||CreateDate
下面是其中一个函数,大家如果不想看,完全可以先跳过,只是为了说
http://cyqdata.cn/cnblogs/article-detail-2139
选择结构(if..else..,switch,try..catch..)的拆分
编程中经常遇到很多条件,以及条件套条件的情况,以至于一个方法会写得非常地长。有多种方法可以规避这个问题。比如反射,策略模式,表驱动等等。先抛开这些方法不讲,从根本需求来探索这个过程。
一个switch结构可能是这样:
swicth(case)
case 1:
//do1
break;
case 2:
//do2
break;
.....
这里注释的do部分代码可能会是很多很多行,以及嵌套switch,if结构。
进一步,这个模型演化成
swicth(case)
case 1:
do1();
break;
case 2:
do2();
break;
.....
do1(){}
do2(){}
也就是将里面的代码模块化。这个方法有效的减小了一个方法的代码长度。实际上
http://cyqdata.cn/cnblogs/article-detail-166