阿不

潜水

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  .Net

1 2 3 下一页

摘要:我们知道DataAnnotations是一个通用的数据模型元数据定义框架,其中最主要的部分是验证框架的定义。DataAnnotations可用户.NET平台的任何应用框架,但我们的项目中都是借助MVC来使用DataAnnotations。在MVC框架中,还对DataAnnotations进行了很多的扩展和适配:比如需要根据定义的DataAnnotations,生成客户端的验证;在Controller模型中绑定模型对数据进行有效性验证等等。我们的数据模型如果都是通过MVC入口,用户输入有的有效性验证的工作都可以交给MVC框架和DataAnnotations来完成。在我们的实践中,这样确实给我们带 阅读全文
posted @ 2010-11-07 20:05 阿不 阅读(5422) 评论(8) 推荐(4) 编辑

摘要:前因 使用ASP.NET MVC时,我们必不可少的要与Attribute打交道,利用Attribute来做元数据的定义是一种非常老套的方法,但是相对于其方便快捷以及低廉的维护成本,还是在MVC框架中得到了充分的运用,主要是用于定义ModelMetadata。在现在的开发框架中,Attribute处理一个非常重要的地位。但是在使用Attribute过程,还是重复遇到了几回相同的问题,但由于缺少记录,... 阅读全文
posted @ 2010-10-24 14:59 阿不 阅读(5112) 评论(10) 推荐(4) 编辑

摘要:很多时候,我们程序需要在后台线程定时执行一些任务,比如定时发送邮件。简单点,我们可以自己创建一个Timer对象来定时,通过定制它的回调事件来完成具体业务需求。对于比较复杂的业务要求,稳定性要求比较高,我们可以使用一些开源框架,比如Quartz.NET创建Windows Service的方式来执行定时任务。 虽然单独的Windows Service具体有稳定性较好等特点,Quartz.NET也可以满... 阅读全文
posted @ 2010-10-08 23:12 阿不 阅读(4731) 评论(7) 推荐(3) 编辑

摘要:我们时常会为某一种具有相同的类(基类)或接口定义泛型的扩展方法,此时我们只需要在泛型扩展方法上加上泛型约束后,编译器在使用该类的派生类时就会自动筛选出可用的扩展方法。如下的定义:此时我们为Interface1定义一个扩展方法如下: 这很好,泛型的约束很好的表达了我们的意图。这个约束这时候能很好的避免这个扩展方法污染到其它类型的对象。接下来,当我们希望为再为其它的类型或接口定义相同的扩展方法时,有兴... 阅读全文
posted @ 2010-09-18 23:08 阿不 阅读(2451) 评论(12) 推荐(0) 编辑

摘要:T4模板Visual Studio IDE的应用越来越多,现在在VS中,只要与代码生成相关的场景,我们都可以通过修改 T4模板来自定义生成格式,比如MVC的视图模板,Entity Framwork的DataContext模板等等。同时我们还可以自己创建T4模板文件(.tt),使用C#(VB)语法来编写T4模板,它的语法与ASP.NET的语法非常类似,大大降低了.NET程序员的学习成本,关于T4的模... 阅读全文
posted @ 2010-09-05 13:28 阿不 阅读(7536) 评论(15) 推荐(4) 编辑

摘要:在MVC的Model中,我们可以定义很多与视图相关的元数据,这些元数据对我们开发视图起着相当重要的作用,特别是在数据验证方面。这些元数据一般情况下我们是不会定义在业务实体(或持久化实体)上面,所以很多情况下,我们会需要开发两种实体:View Model和Business Model。这样就造成,在Action与View的沟通当中,我们需要使用View Model,然后在业务逻辑处理时,我们需要再将View Model映射到Business Model,这将会使我们的开发框架变得繁琐。因为一般情况下,View Model和Business Model在很多情况下,都是很雷同的对象,只是View 阅读全文
posted @ 2010-07-27 20:26 阿不 阅读(4501) 评论(21) 推荐(4) 编辑

摘要:在ASP.NET MVC2中,我们经常这样来写表单模板:由于DataAnnotations的存在,我们完全可以把字段的视图元数据全部都在Model中设计好,那么开发编辑视图就变得非常的简单,可能只是对应Model的字段,一行一行的去写Html.EditorFor ,这是一种重复而枯燥的工作。因此我想到,写一个VS扩展,在HTML编辑器的右键菜单中添加一个命令,点一下就可以根据当前的Model的类型... 阅读全文
posted @ 2010-07-26 13:39 阿不 阅读(3885) 评论(5) 推荐(2) 编辑

摘要:ASP.NET MVC2 结合System.ComponentModel.DataAnnotations 提供了一套非常有效的实体验证框架。对于错误信息的处理,它默认提供了两种选择: 字符串常量 从程序集资源文件读取 但是在我们这里,我们有一套自己的资源文件方案,也就是我们需要自己控件错误信息的本地化操作。由于在元数据,我们只能提供常量,无法进行字符串操作。一种比较直接和麻烦的办法就是重写所有的验证规则,在验证规则中对字符串常量进行本地化操作。但是这样做,一方面会比较麻烦,所有的验证规则我们都要进行重写;另一方面我们在设计model时就是特别的小心使用我们自己重写过的规则才能达到我们的目的 阅读全文
posted @ 2010-07-22 20:51 阿不 阅读(2719) 评论(5) 推荐(1) 编辑

摘要:很多关于.NET 4.0新特性的介绍,缓存功能的增强肯定是不会被忽略的一个重要亮点。在很多文档中都会介绍到在.NET 4.0中,缓存功能的增强主要是在扩展性方面做了改进,改变了原来只能利用内存进行缓存的局限,允许用户在不改变代码的情况下通过修改配置的方式,灵活的切换缓存介质。Cache Provider是可扩展的,开发人员可以方便的将缓存存放在文件中,也可以扩展使用分布式缓存。然而,由于之前已经有System.Web.Caching.Cache这个缓存对象的存在,让我一直对.NET 4.0的新的Cache和原来已存在的System.Web.Caching.Cache的关系产生了一定的迷惑。通过 阅读全文
posted @ 2010-07-16 18:16 阿不 阅读(12395) 评论(9) 推荐(5) 编辑

摘要:几天前,同事浪子在用VS2010创建MVC站点时,发现里面的页面模板中大量使用了一种新的模板语法:<%: %> ,由于之前他比较少使用ASP.NET MVC,还以为是MVC里面新增的一种模板语法,而我很早就开始使用MVC工程,但也从来没有见过此种语法。于我们共同断定这可能是ASP.NET4.0中新出的一种模板语法。果然,我们在ASP.NET 4.0白皮书上找到了答案:这是用于替代<... 阅读全文
posted @ 2010-05-29 21:19 阿不 阅读(2926) 评论(4) 推荐(0) 编辑

摘要:如果你经常去查阅相关的互联网协议,比如:HTTP,MetaWeblog API,ATOM,WebDav,SMTP。你都会不经意的发现它们都有一个相对的RFC编号,这些编号会对应一个像“http://tools.ietf.org/html/rfc2616”的一个链接页面,这个页面详细说明了该协议的定义规范。通常一个协议都定义都需要比较长的内容,但是通过阅读这些协议本身我们就可以更好,更完全的理解该协... 阅读全文
posted @ 2010-04-18 15:03 阿不 阅读(2479) 评论(5) 推荐(2) 编辑

摘要:ASP.NET MVC框架从还未正式发布时就已经成为了我工作的方向和重点,而它也在不断的完善和发展,前两天,ASP.NET MVC2 RTM已经发布了,MVC2主要是在提高我们基于ASP.NET MVC框架之上的WEB程序开发效率上下功夫,新增了很多的常用功能的集成,API的优化以及IDE的改善支持等方面。随着开发效率的不断提高和资源的不断丰富,以及MVC框架本身所具备的天生的优点,我相信未来ASP.NET平台的WEB开发将会逐步走向MVC方向。至少在ASP.NET Mobile Web的开发中,Webform已经被MVC所取代,在未来的ASP.NET中,包含Mobile WebForm 控件 阅读全文
posted @ 2010-03-14 20:55 阿不 阅读(3360) 评论(0) 推荐(1) 编辑

摘要:ASP.NET中,所有的上下文对象(HttpContext,HttpReqeust,HttpResponse…)都没有进行抽象,而且它们都是自我封闭的对象,我们无法对它进行扩展和修改。虽然它们都提供公有构造器,我们可能也可以追溯到请求管道的源头,去自己实例化HttpContext,可是它们的大部分方法都是封闭的,不可重写的,这样使得我们在做多工作的时候无法称心如意,甚至于四处碰壁。 ASP.NET... 阅读全文
posted @ 2010-01-07 16:27 阿不 阅读(4974) 评论(4) 推荐(3) 编辑

摘要:在Kooboo中使用了Entity Framework作为持久化框架,但由于EF1.0并没有提供完整缓存解决方案,一直以来都在为数据缓存而烦脑,在没有找到合适解决方案的情况下,采取了临时的解决办法:直接缓存实体。但是由于Entity实体都是带状态的,并且都与ObjectContext有间接的反向引用,缓存带状态的实体,会造成对象上下文混乱和连接资源的无法被正确释放。因此缓存的Entity实体,首先... 阅读全文
posted @ 2009-09-15 23:26 阿不 阅读(5401) 评论(9) 推荐(0) 编辑

摘要:背景 随着Extjs的不断成熟,它也在不断的被开发人员所接受和使用。Extjs是一个完全的UI框架,它自带的控件已经能很好的满足日常开发的需要,并且它底层仍是以html和样式为基础,在不满意需求特殊需求的情况,我们也非常方便的进行扩展。所以,我一贯的态度是,要使用extjs就要用的彻底,UI部分应该完全使用Extjs来实现,完全摈弃传统的ASP.NET前台模式。当然,现在也有一些把Extjs封装成... 阅读全文
posted @ 2009-08-17 22:38 阿不 阅读(10938) 评论(12) 推荐(5) 编辑

摘要:去年这个时候也是8月份,离开了生活9年的福州来到厦门,已整整一年的时间。离开福州的原因,就是不想让自己在安逸中沉沦下去,需要重新寻找技术的激情。来到新公司后,也开始投入老板梦想中的那个伟大CMS的研发工作,至今仍在不断的忙碌。当时的我,对CMS的概念的并不是特别理解,时至今日,我仍然无法很清楚的定义什么才是CMS。CMS是Content Managment System的缩写,意为内容管理系统,但... 阅读全文
posted @ 2009-08-15 00:47 阿不 阅读(25741) 评论(63) 推荐(8) 编辑

摘要:System.Web.Compilation.BulidManager负责站点的动态编译,所有的页面、用户控件、和所有的ASP.NET特殊目录,都会在运行时被BuildManager编译和处理,也包括Bin目录。我们知道在ASP.NET中,所有的页面和控件都包括.ASPX和后台代码文件,除了代码文件在编译时会被静态编译成一个类型外,.ASPX文件在运行时也会被动态编译在一个动态类型中,以便写在.A... 阅读全文
posted @ 2009-04-22 09:57 阿不 阅读(2441) 评论(2) 推荐(0) 编辑

摘要:利用IIS带的SMTP虚拟服务器,可以匿名发送邮件,并且通过telnet就可以发送,一直只是看过别人做过,并且看过很多遍,自己没有尝试过还是无法即拿即用,今天还是亲手尝试了一下,并记录以下的发送步骤。 使用Telnet发送邮件: 打开cmd命令行 输入telnet 127.0.0.1 25,连接本地邮件服务器 输入HELO,建立会话,返回250成功代码。 输入MAIL FROM:youname@s... 阅读全文
posted @ 2009-04-09 15:33 阿不 阅读(2543) 评论(3) 推荐(0) 编辑

摘要:CS-Script是基于ECMA CLR标准之上的动态编译C#脚本的编译引擎。利用CS-Script可以在系统中动态编译一段C#脚本,并以静态函数或实例对象的形式使用。放在一个系统框架中,可以起到部分动态语言的效果。先看看它的使用:Assembly assembly = CSScript.LoadCode( @"using System; public class Script { public ... 阅读全文
posted @ 2009-04-07 22:35 阿不 阅读(12205) 评论(31) 推荐(1) 编辑

摘要:在ASP.NET MVC中,如何来实现表单的验证与授权访问呢?至少在CTP3中,还没有一个官方的解决方案。ASP.NET WebForm的表单验证和授权机制是否适合在ASP.NET MVC中使用呢?带着这些问题来进入我们今天的主题。 在ASP.NET WebForm的架构下,我们可以通过一定的配置即可实现用户身份验证和授权。特别是在ASP.NET 2.0的Membership功能的支撑下,可以做到更加简洁可复用的用户验证系统。通过web.config可以做到对页面或目录对不同用户身份可见性的定制,但是它是基于物理文件和目录。而在ASP.NET MVC架构下,用户访问的每一个页面在磁盘中并没有一 阅读全文
posted @ 2008-07-09 22:22 阿不 阅读(7821) 评论(17) 推荐(0) 编辑

1 2 3 下一页