我们在进行Web开发时, 经常会遇到需要输入日期, 日期时间和数字的时候, 可惜是的是微软在Visual Studio2005时增加了很多的服务器控件, 可却没有增加Web 类型的数字和日期控件。如果直接采用TextBox, 用户界面即不友好, 同时需要在服务端增加很多不必要的验证代码, 肯定是不可取的。
虽然我们可以采用嵌入Java Script的办法来引导用户输入, 但是需要为每一个数字和日期控件增加Java Script代码, 同时也需要管理各种图片及Java Script 文件, 其实每个数字和日期的设置都是一样的, 即使是在不同的项目里,很是烦恼。 是不是有很好的解决办法呢。
答案是肯定的, 那就是做成Web服务器控件, 分别是Web 日期控件和Web 数字控件。
Web 日期控件和Web 数字控件需要解决一下问题
1: 用户友好。 要有明确的提示引导信息, 操作要方便快捷。 同时不能有太多的限制。
2: 开发友好。 所需要的图片, JavaScript 应该打包到Assembly , 开发人员不需要去管理这些资源。 同时, 应该支持简单的设计太, 即在设计的时候应该和运行时看到的样子基本一致。
主要的技术:
JavaScript
服务器控件离不开JavsScript;日期控件一般采用弹出Layer的办法来实现, 弹出一个小窗口的办法不好, 主要是弹出一个小窗口的速度慢 , 有一个明显的等待过程。 弹出Layer 的办法一般是采用PopCalenday.Js, Layer 的Html是采用JavaScript 动态生成的, 其原型应该是一个法国作者,现在网上的Web日期控件大都是在此基础上做少量修改而成的。 由于Layer Html 是采用JavaScript 动态生成的, 因此, 修改的难度比较大。这也是Web 日期控件最核心的技术部分了。
正在表达式
日期控件应该既能选取, 同时也能直接输入, 数字控件一般采用直接输入的方式来实现。日期和数字控件都有特定的格式, 并且这种格式式可以采用正在表达式来验证的。 数字和日期控件应该引导用户按到正确的格式进行输入, 限制不正确的格式输入。
具体实现为在服务端根据属性设置来生成正则表达式, 然后传递到客户端, 客户端根据正则表达式来引导用户输入。
资源嵌入
Web日期控件需要有图片和JavaScript文件的支持;一般的做法式将这些资源放在Web站点特定的目录, 但这样做比较麻烦。微软在Vs2005开始支持资源嵌入,因此, 我们需要将这些资源嵌入到Assembly, 以简化Web 日期数字控件额的部署。
多语言支持
数字和日期的表达形式一般与特定的语言文化联系在一起,因此, 数字和日期控件应该支持多语言。多语言的支持可以考虑如下三种形式, 一是直接指定显示的格式,这样比较简单, 适合于只需要在一种语言文化的环境下使用。 二是根据客户端的的语言文化来决定日期和数字的格式, 这样做比较符合用户的使用习惯。 还有就是根据服务器当前线程的语言文化, 这样做的好处是支持多语言切换。
强类型的值属性
TextBox 只有Text属性, 根据Text属性可以推算出数字和日期的值 , 但这需要额外的代码, 因此, 服务器控件应该有自己的强类型的值属性; 因为现在Linq已经开始流行, 因此支持Nullable的值类型也就很有必要了。
Web DateBox还应该支持日期时间格式。 虽然日期时间格式不是经常需要, 但作为一个通用的控件, 还是应该支持的。
1: 支持日期控件的图片, Java Script , CSS等文件全部与DLL一起打包, 因此, 使用本控件库时, 只需要简单的添加引用, 然后就可以从工具箱上拖到Web Form就可以了。
2:数字控件改善了对齐,ClipBoard访问功能
3:全面支持Nullable()属性
4:日期控件不仅支持日期, 同时也支持日期时间格式, 所有辅助文件全家打包到DLL, 支持多种日期格式,
5: 日期控件使用Layer技术, 选取日期时不是弹出一个新的小Page, 而是弹出一个Layer, 与页式日期控件相比,极大的改善了用户友好性。
6: 数字控件采用在服务端自动生成正则表示式的形式
这两个小控件, 能够极大的改善Web application 的开发速度, 同时提供了very cool的用户体验
下载地址 http://www.bluetechchina.com/ResourceCenter/DotNetCodingControls2.0.Zip
g