随笔分类 - 其它 / ASP.NET
传统asp.net传统模式与MVC模式
摘要:回到目录对于我之前项目中的统一条件过滤采用了dictinary来实现的,优点就是方法签名统一了,缺点不用说,就是字典的键容易写错,感觉一进入.net3.5之后,一切都要和Expression联系在一起,我们在创建一个Expression(表达式树)时,可以使用lambda表达式去创建,很容易:1 Expression<Func<string, bool>> predicate= name=>name=="zzl";可以看到,它其它由一个委托组成,输入参数是个字符,输出是个布尔值,在LINQ中这种技术被广泛的使用在扩展方法中,如Where扩展方法
阅读全文
摘要:回到目录接口到底是什么,应该如何去使用它呢?书上说:“接口规定了一组操作的规范,它将一些不相关的对象联系在一起”,说是这样说,但在实际当中我们应该如何去用接口,如何去用好接口呢?事实上,我一直认为,在面向对象中,接口就是大哥大,用好接口,理解好接口,你对面向对象的认识也将上升一个新的台阶,接口不可遗忘的功能就是它实现了面向对象的多态性,多态,即一种对象,在接受指定信息时,实现指定的对象实例,这其实就是我对多态的比较直观的理解。一个用户操作的接口可能是这样被定义: 1 /// <summary> 2 /// 用户相关接口规范 3 /// </summary> 4 ...
阅读全文
摘要:一 如何让实体发生更新时,同时记录它更新的内容到日志表在日常生活中,有个订阅的事,如,订个报纸,当出版社出版后,报纸就会送到您家,你不用管它什么时候出版。在OA系统或者后台管理系统中,修改一条记录,总是想把它记住,等数据出问题后,好有据可查。如何去实现这样的效果呢,难道为每一个方法都写一个insertLog(log)方法吗?这也太不面向对象了吧,呵呵,做为一个懒型程序员,不会这样做的,呵呵。像这样:1 Log log=new Log{...};2 product.Update(entity);3 logRepository.insertLog(log);4 5 Log log=new Log{
阅读全文
摘要:在第三讲中我们主要关注了代码重构的思想,从方法重构到类重构再到项目重构,这是一个过程,一种思想上的升华,今天将继续我们“程序复用性设计”的旅程,说一下方法重载的重要性。细心的朋友一定会非常关注net frameworks的源代码,即使只能看到它内部方法的定义,也足够了,在System.Web.Mvc这个命名空间下定义了很多关于MVC架构的东西,我们就以它为例来说一下方法重载吧!重载的好处:1 对方法调用的程序员来说,它是友好的(程序员只关心自己调用的方法签名即可,不用管参数为NULL怎么办这些逻辑)2 对于代码维护量来说,它是容易的(核心代码只放在参数签名最多的方法中)3 对于代码扩展来说,它
阅读全文
摘要:回到占占推荐博客索引 本系列的文章主要是讲C#基础,面向对象OOP及OOD的相关知识,而且本系列文章将一直会更新下去,感谢您的阅读 基础才是重中之重系列~目录 第一回 基础才是重中之重~类是怎么执行的 第二回 基础才是重中之重——面向抽象编程(抽象类的多态性) 第三回 基础才是重中之重——派生类集合
阅读全文
摘要:回到目录本文中的“二”,指的是二进制,即看见2就进一,也叫逢二进一,它是最为简单和清晰的数据,在现实生活中,人们用的最多的就是十进制数据,即逢十进一,看一下例子:二进制: 十进制0 001 0110 0211 03100 04看到了吧,在二进制中,不会出现比1大的数,除了0就是1,而在十进制中,不会出现10,它由0~9这10个数字组成。在我们的C#中,位运算分为左位移和右位移,分别用<<和>>表示,左移相当于向左移位,右面补0,例如:10 << 1 它的含义是10 0,它最后的结果就是100,相当于10进制的4,这时我们难看出左移1位,相当于乘2操作,返之还
阅读全文
摘要:回到目录首先将来说一下Dispose是什么东西吧,对于我们使用非托管的资源时,需要自己去实现Dispose这个方法,它的含义就是释放使用的内存空间。例如Stream这个类型,它就是一个非托管类型,它会实现一个IDisposable接口,来实现Dispose方法像TransactionScope,.net事务,它也是一个非托管的,也就是说,我们在使用完事务后,需要自己去进行Dispose()操作,下面问题就来了,这个Dispose写在哪里合适呢?注意看这段代码:using (TransactionScope trans = new TransactionScope()) { ...
阅读全文
摘要:本文章主要以上一篇文件的代码在写法上进行一个优化,更代码更精简,更能发挥.net 3.5为我们提供的已有功能,呵呵!首先,为了只有返回值的委托来说,我们是不用再去定义它的,完成可以用.net提供的Func<T>这个委托来实现同时,这个委托也支付多个输入参数的情况,和Func<>对应的一个委托叫Action<>,它没有返回值,可以由多个输入参数,下面是对Func<> 委托的使用实例,同样使用上一篇文章作为例子public class ReturnMessage { public static event Func<string> Ret
阅读全文
摘要:事件是这样的,我觉得用事件来做这事比较好,它很好的遵循了“开闭原则”,当然这并不是最重要的,最重要的应该是它更符合程序开发的原则。场合:一个订单处理问题,一个订单的产生可能由多种途径生成,A产品走A产品的订单处理过程,完成后显示A产品的订单成功页,B产品走B产品的购买流程,完成后,显示B产品听订单成功页,当然陆续可能会有C产品,D产品等等实现:不考虑订单处理业务,只考虑订单成功页的显示解决1:由A产品页向订单统一处理程序传递参数,在订单统一处理程序里去判断参数,然后显示信息解决2:A产品订阅一个事件,去返回订单成功后显示的页面,在订单统一处理程序里触发这个事件,然后自己显示指定信息从上面两解决
阅读全文
摘要:回到目录答案是肯定的,一个DBML模型可以对应多个数据库,只要数据库中的表与模型中定义的表结构完成相同,就可以这个技术,我们可以用来开发一些通用的功能模块,如通过后台管理模块,我们将一些通用表进行抽象,如,对用户,角色,部门,菜单等进行抽象,将它的模块建立在我们的公用项目中,然后对这个模型进行操作,在建立DBContext上下文时,我们需要保留一个连接字符串,即,真正的项目中用哪个库,我们这个串就指定哪个库就行了。如图,后台表结构然后,它个模块可以用别对应包含这几个表结构的数据库,呵呵通用后台系统我会在之后的文章中给大家讲到,今天先看一下它的图像,呵呵大家可以看到,对于每一个项目的功能和作用,
阅读全文
摘要:回到目录如果在linq中希望进行一对多的复合查询时,请直接在查询中使用join into,或者使用let 关键字,当然在建立实体时动态赋值对于查询的性能也是没有影响的,两次查询结果完成相同一 :在实体中赋值var linq = from data in this.GetModel() join data2 in iWebDepartmentsRepository.GetModel() on data.DepartmentID equals data2.DepartmentID select new WebM...
阅读全文
摘要:回到目录在使用框架页时,它的子框架页面不能正常加载,而单独访问每个子页面是可以访问的,产生这个问题的原因是由于你的frameset节点位置不正确在网页中,它不能放在<body></body>之间,必须放在它的外面才行,就像这样:<html></head> <frameset rows="60,*" frameborder="no" border="0" framespacing="0"> <frame src="/Account/Statu
阅读全文
摘要:System.Web.Caching.Cache是.net为我们提供的一个轻量级的缓存组件,它提供了最基础的增,增过期,删除,获取等操作,下面是对Cache进行的一个封装,方便以后统一调用和扩展。 /// <summary> /// 缓o存?相à关?的?操ù作÷类à /// 占?占? /// </summary> public class DataCache { ...
阅读全文
摘要:将系统中全局的,容易发生变化的数据,但调用频繁的常量信息存储在文件中是个不错的选择,原因有以下几点: 1 由于操作频繁,放在文件里可以减低数据库的负载 2 由于信息是全局的,所以放在文件中,对于所有层都可以开放 3 由于它容易发生变化 ,所以写死在代码中,不是一个聪明的作法,放在文件中可以不用编译,就可以使信息同步到程序上 4 操作频繁,放在文件中,这事实上对于服务器的CPU来说不是一件好事,所...
阅读全文
摘要:这段时间确实忙,以至于连写博客的时间都没有了,今天正好有点时间,有第五章依赖住入简单的说一下,主要分两块,一是依赖住入的概念,什么时候使用依赖注入,第二个问题是通过一个使用Unity的实例来让大家对依赖注入有一个很直观的认识。一 概念:依赖注入,即Dependency Injection,即DI,有时也叫它控制反转,一般用IoC来实现对象的创建工作,我们知道一个类,要想被实例化我们可以用new关键字,例如一个数据操作接口规范interface IRepository{},其中有一个SQLSERVER的数据操作去实现了它class SQLRepository:IRepository{},而客户电
阅读全文
摘要:回到目录名称有点饶,不是很好理解,但我喜欢这种大白话,不喜欢书所翻译过来的话,呵呵!今天要把一个不确定的问题解决,问题是:一个程序中,有一个属性,如果它为true时,我希望把另一些方法自动运行,这是可以通过订阅事件来实现的,对吗?经过我的测试确实是这样的,呵呵。事件一个一直叫我们头痛的话题,一个能不用就不用的东西,我们程序员为什么那么怕“事件”呢?我来分析几个原因1 对本身的概念不是很理解2 对它的作用不是很清晰,可能书上说不到点上,个人认为3 平时用的少,所以对它更加陌生今天,我就和大家一起再学习一个C#的事件一说事件,就不行不说委托,这两者到底是什么关系呢,在我看来,委托就是一个类,而事件
阅读全文
摘要:回到目录说到override大家都知道,它是复写,子类去复写父类的方法与属性,是,没错,今天主要就说这个复写,如果不复写会有什么结果,有没有想过,呵呵来和我做个demo吧! 1 abstract class Parent 2 { 3 public virtual string Msg { get; set; } 4 } 5 6 7 class Sub : Parent 8 { 9 public override string Msg { get; set; } 10 11 }在另外一个类中为sub这个属性赋值,返回值为它的基类paren...
阅读全文
摘要:为什么要架构,我来说说原因 当你希望把复杂问题清晰化时,而不是简单化,这时需要架构 当你希望把代码的重复利用率提高时,需要架构 当你希望对团队整个进行把控时,需要架构 以上只是我简单的总结,下面说说架构之“走火入魔”篇 我很喜欢看武侠电影,喜欢邵氏,邵氏经典,必属佳片说的一点不错,在我看大部分武侠剧时,很多情节都是大反派练某种神功,走火入魔的情景,他们为何会走火入魔呢?在我看来是他们对自...
阅读全文
摘要:一般情况下WS服务只能在本机调试的时候进行访问,如果希望在IIS中调试或者在WWW上以域名的方式调试需要在web.config的system.web节点中添加 如下代码: <webServices> <protocols> <add name= "HttpGet"/> <add name= "HttpPost"/> </protocols> ...
阅读全文
浙公网安备 33010602011771号