10 2013 档案
摘要:详情请查看 http://aehyok.com/Blog/Detail/7.html个人网站地址:aehyok.comQQ 技术群号:206058845,验证码为:aehyok本文文章链接:http://www.cnblogs.com/aehyok/p/3981965.html感谢您的阅读,如果您对...
阅读全文
摘要:Repository模式之前如果我们用最原始的EF进行设计对每个实体类的“C(增加)、R(读取)、U(修改)、D(删除)”这四个操作。第一个:先来看看查询,对于实体类简单的查询操作,每次都是这样的过程会在代码中拥有大量的重复 极为类似的代码段。 using (var db = new EFContext("EFContext")) { var persons = db.Persons.Where(t => t.PersonName == "aehyok").OrderByDescending(t => t.PersonI...
阅读全文
摘要:前言在http://www.cnblogs.com/aehyok/p/3386650.html前面一节主要是对MEF进行简单的介绍。本节主要来介绍如何在Asp.Net Mvc3.0中使用MEF。准备工作首先建立一个Asp.Net Mvc3.0的Web项目。然后建立一个业务逻辑处理的类库项目。在MEF.Repository类库项目中建立一个ITestRepository的接口namespace MEF.Repository{ public interface ITestRepository { string GetTestString(); }}以及它的一个实现类...
阅读全文
摘要:前言Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)等。MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序。MEF方式MEF 提供一种通过“组合”隐式发现组件的方法。 MEF 组件(称为“部件-Part”)。部件以声明方式同时指定其依赖项(称为“导入
阅读全文
摘要:IOC模式 Ioc模式(又称DI:Dependency Injection 依赖注射). 分离关注( Separation of Concerns : SOC)是Ioc模式和AOP产生最原始动力,通过功能分解可得到关注点,这些关注可以是 组件Components, 方面Aspects或服务Services。 从GoF设计模式中,我们已经习惯一种思维编程方式:Interface Driven Design 接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执行:AInterface a = new AInter...
阅读全文
摘要:前言泛型允许你在编译时实现类型安全。它们允许你创建一个数据结构而不限于一特定的数据类型。然而,当使用该数据结构时,编译器保证它使用的类型与类型安全是相一致的。泛型提供了类型安全,但是没有造成任何性能损失和代码臃肿。在这方面,它们很类似于C++中的模板,不过它们在实现上是很不同的。使用泛型集合.NET 2.0的System.Collections.Generics 命名空间包含了泛型集合定义。各种不同的集合/容器类都被"参数化"了。为使用它们,只需简单地指定参数化的类型即可。 ArrayList array = new ArrayList(); arr...
阅读全文
摘要:前言Gzip最早由Jean-loup Gailly和Mark Adler创建,用于Unix系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是Gzip格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP协议上的Gzip编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用Gzip压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果
阅读全文
摘要:PredicatePredicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素。通过查看源码发现Predicate Array先来看一下Array.FindAll构建一个字符串类型的数组进行演示测试第一种方式 string[] arrayString = new string[] { "One","Two","Three","F...
阅读全文
摘要:前言 原文链接http://aehyok.com/Blog/Detail/6.html 当下最流行的前端开发框架Bootstrap,可大大简化网站开发过程,从而深受广大开发者的喜欢。本文总结了Bootstrap之所以广泛流传的11大原因。如果你还没有使用Twitter Bootstrap,建议你...
阅读全文
摘要:1.Knockout.Js官网学习(简介)2.Knockout.Js官网学习(监控属性Observables) Knockout.Js官网学习(数组observable)3.Knockout.Js官网学习(visible绑定) Knockout.Js官网学习(text绑定) Knockout.Js官网学习(html绑定、css绑定) Knockout.Js官网学习(style绑定、attr绑定)4.Knockout.Js官网学习(click绑定) Knockout.Js官网学习(event绑定、submit绑定) Knockout.Js官网学习(enable绑定、disable绑定) Knoc
阅读全文
摘要:使用ignore忽略不需要map的属性如果在map的时候,你想忽略一些属性,你可以使用ignore累声明需要忽略的属性名称集合: var data = {"name":"aehyok","age":"25" }; var mapping = { 'ignore': ["age"] }; var viewModel = ko.mapping.fromJS(data, mapping);这样执行后age不会在viewModel中你声明的忽略数组被编译到默认的ignore数组里。你可以
阅读全文
摘要:前言有时候,在使用ko.mapping.fromJS的时候,可能有必要去使用mapping的高级用法来定义mapping的详细过程,以后定义了,以后再调用的时候就不必再定义了。这里有一些情形,你可能需要使用这些option。使用keys来使对象unique化你有一个JavaScript对象,如下:var data = { name: 'Scot', children: [{ id: 1, name: 'Alicw' }] };并且他已经绑定到viewModel var viewModel = { name: ko.observable("Scot&qu
阅读全文
摘要:前言 Knockout设计成允许你使用任何JavaScript对象作为view model。必须view model的一些属性是observable的,你可以使用KO绑定他们到你的UI元素上,当这些observable值改变的时候,这些UI元素就会自动更新。使用mapping要引用的Js文件https://github.com/SteveSanderson/knockout.mapping/tree/master/build/output。手工mapping显示当前服务器时间和你网站上的当前用户数。你应该使用如下的view model来代表你的这些信息: var viewModel =...
阅读全文
摘要:前言Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储需要序列化数据),交换数据最方便的就是使用JSON格式 – 大多数的Ajax应用程序也是使用这种格式。加载或保存数据Knockout不限制你用任何技术加载和保存数据。你可以使用任何技术和服务器来交互。用的最多的是使用jQuery的Ajax帮助,例如:getJSON,post和ajax。你可以通过这些方法从服务器端获取数据:$.getJSON("/some/url", function (data) { ///可以使用Data来更新ViewModel,并且通过K
阅读全文
摘要:前言你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等)。你可以你封装复杂的逻辑或行为,自定义很容易使用和重用的绑定。例如,你可以在form表单里自定义像grid,tabset等这样的绑定。注册你的绑定添加子属性到ko.bindingHandlers来注册你的绑定: 然后就可以在任何DOM元素上使用了: 你实际上没必要把init和update这两个callbacks都定义,你可以只定义其中的任意一个。update回调当管理的observable改变的时候,KO会调用你的update callback函数,然后传递以下参数:element — 使用这个绑定的.
阅读全文
摘要:前言VS2013终于发布了,虽然之前自己使用VS2010和VS2012的时间也不长,尤其是VS2012这自己刚刚也没用多久,看到VS2013发布了,自己忍不住也下载了下来,官网肯定可以下载,不过自己是在 http://pan.baidu.com/s/1bzvka这里下载的VS2013 RMT版本,其实是和官网的一样的。下载完成后安装好蛋疼,提示必须先安装IE10,迫于无奈自己就又下载安装了IE10,然后算是才可以真正的来安装VS2013。接下来就来看看VS2013中给我们带来的什么吧,更新的肯定不止我下面列举的,我列举的主要就是我关注或了解到的。.Net Framework版本支持之前在VS2
阅读全文
摘要:selectedOptions绑定selectedOptions绑定用于控制multi-select列表已经被选择的元素,用在使用options绑定的 该参数是数组(或observable数组)。KO设置元素的已选项为和数组里match的项,之前的已选择项将被覆盖。如果参数是依赖监控属性observable数组,那元素的已选择项selected options项将根据参数值的变化(通过push,pop,或其它observable数组方法)而更新,如果不是,那元素的已选择项selected options将只设置一次并且以后不在更新。不管该参数是不是observable数组,用户在multi-.
阅读全文
摘要:前言options绑定控制什么样的options在drop-down列表里(例如: 该参数是一个数组(或者observable数组)。对每个item,KO都会将它作为一个 添加到这可以说是Multi-select listDrop-down list展示的任意JavaScript对象,不仅仅是字符串Destination country: Your country: You have chosen a country with population . optionsCaption有时候,默认情况下不想选择任何option项。但是single-...
阅读全文
摘要:前言checked绑定是关联到checkable的form表单控件到view model上 - 例如checkbox()或者radio button() 。当用户check关联的form表单控件的时候,view model对应的值也会自动更新,相反,如果view model的值改变了,那控件元素的check/uncheck状态也会跟着改变。注:对text box,drop-down list和所有non-checkable的form表单控件,用value绑定来读取和写入是该元素的值,而不是checked绑定。简单示例示例代码Send me spam: 运行之后对于checkbox,当参数为..
阅读全文
摘要:前言value绑定是关联DOM元素的值到view model的属性上。主要是用在表单控件,和上。当用户编辑表单控件的时候, view model对应的属性值会自动更新。同样,当你更新view model属性的时候,相对应的元素值在页面上也会自动更新。注:如果你在checkbox或者radio button上使用checked绑定来读取或者写入元素的 checked状态,而不是value 值的绑定。简单示例代码如下对两个input进行value的属性绑定Login name: Password: 运行后效果为注意密码的type为passwordKO设置此参数为元素的value值。之前的值将...
阅读全文
摘要:enable绑定enable绑定使DOM元素只有在参数值为 true的时候才enabled。在form表单元素input,select,和textarea上非常有用。enable简单示例enableBind I have a cellphone Your cellphone number: 这个例子里,“Your cellphone number”后的text box 初始情况下是禁用的,只有当用户点击标签 “I have a cellphone”的时候才可用。声明DOM元素是否可用enabled。非布尔值会被解析成布尔值。例如0和null被解析成false,21和非...
阅读全文
摘要:event绑定event绑定在DOM元素上添加指定的事件句柄以便元素被触发的时候执行定义的JavaScript 函数。大部分情况下是用在keypress,mouseover和mouseout上。简单示例 Mouse over me Details 就是通过在一个div上绑定两个事件,一个鼠标点上去的mouseover让下面的div内容显示出来,另一个是鼠标移出mouseout让下面的div内容再隐藏。你可以声明任何JavaScript函数 – 不一定非要是view model里的函数。你可以声明任意对象上的任何函数,例如: event:...
阅读全文
摘要:前言click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数。大部分是用在button,input和连接a上,但是可以在任意元素上使用。简单示例ClickBind You've clicked times Click me 预览效果 每次点击按钮的时候,都会调用incrementClickCounter()函数,然后更新自动更新点击次数。你可以声明任何JavaScript函数 – 不一定非要是view model里的函数。你可以声明任意对象上的任何函数,例如: someObject.someFunction。View model上的函数在...
阅读全文
摘要:Style绑定style绑定是添加或删除一个或多个DOM元素上的style值。比如当数字变成负数时高亮显示,或者根据数字显示对应宽度的Bar。(注:如果你不是应用style值而是应用CSS class的话,请参考CSS绑定。)Style简单示例 Profit Information 简单示例代码,运行后发现为红色的字体当currentProfit 小于0的时候div的style.color是红色,大于的话是黑色。该参数是一个JavaScript对象,属性是你的style的名称,值是该style需要应用的值。你可以一次设置多个style值。例如,如果你的view model有一个叫i...
阅读全文
摘要:前言建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。结构图Builder是为创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder是具体的建造者,实现Builder接口,构造和装配各个部件。可以有多个不同的具体的建造者。Product具体产品角色Director就是构建一个使用Builder接口的对象。代码实现首先来看一下产品类 public class Product { List parts = new List(); public void Add(string part) ...
阅读全文
摘要:Html绑定html绑定到DOM元素上,使得该元素显示的HTML值为你绑定的参数。如果在你的view model里声明HTML标记并且render的话,那非常有用。简单示例 这样Html 的EM标签就会显示于此KO设置该参数值到元素的innerHTML属性上,元素之前的内容将被覆盖。如果参数是监控属性observable的,那元素的内容将根据参数值的变化而更新,如果不是,那元素的内容将只设置一次并且以后不在更新。如果你传的是不是数字或者字符串(例如一个对象或者数组),那显示的文本将是yourParameter.toString()的等价内容。关于HTML encoding因为该绑定设置元素的i
阅读全文
摘要:1.设计模式之前奏(UML类图) 2.设计模式之一(单例模式) 3.设计模式之二(简单工厂模式)4.设计模式之三(工厂方法模式)5.设计模式之四(抽象工厂模式第一回合)6.设计模式之四(抽象工厂模式 第二回合)7.设计模式之四(抽象工厂模式 第三回合)8.设计模式原则(单一、开放封 闭、里氏代换、依赖倒转、迪米特法则五大原则)9.设计模式之五(策略模式)10.设计模式之六(装饰模式)11.设计模式之七(代理模式)12.设计模式之八(原型模式) 13.设计模式之九(模版方法模式)14.设计模式之十(外观模式)
阅读全文
摘要:前言text 绑定到DOM元素上,使得该元素显示的文本值为你绑定的参数。该绑定在显示或者上非常有用,但是你可以用在任何元素上。简单绑定Today's message is: KO将参数值会设置在元素的innerText (IE)或textContent(Firefox和其它相似浏览器)属性上。原来的文本将会被覆盖。 如果参数是监控属性observable的,那元素的text文本将根据参数值的变化而更新,如果不是,那元素的text文本将只设置一次并且以后不在更新。 如果你传的是不是数字或者字符串(例如一个对象或者数组),那显示的文本将是yourParameter.toString()..
阅读全文
摘要:前言让visible绑定到DOM元素上,使得该元素的hidden或visible取决于绑定的值。简单的绑定首先还是先定义一个ViewModel var AppViewModel = { shouldShowMessage: ko.observable(true) ///初始化的时候div是visible的 }; AppViewModel.shouldShowMessage = ko.observable(false); ///现在hidden勒 ko.applyBindings( AppViewModel);并且通过ko.apply...
阅读全文
摘要:前言在Entity Framework 简单查询操作中主要是学习了在Entity Framework中的几种不同模式的查询操作,现在主要来学习一下简单的增加、删除、修改操作。增加 在EF中添加操作一般有两种方式:一是直接创建对象,然后调用“DbSet”的”Add()”方法进行添加;二是调用数据库上下文的”Entry()”方法并设置对应的状态。无论使用哪种方式最终一定要调用“SaveChange()”进行提交。如: using (var db = new EFContext()) { var stephen = new ...
阅读全文
摘要:前言 如果你要探测和响应一个对象的变化,你应该用observables。 如果你需要探测和响应一个集合对象的变化,你应该用observableArray 。 在很多场景下,它都非常有用,比如你要在UI上需要显示/编辑的一个列表数据集合,然后对集合进行添加和删除。使用observables数组1.简单举例2.关键点:监控数组跟踪的是数组里的对象,而不是这些对象自身的状态。简单说,将一对象放在observableArray 里不会使这个对象本身的属性变化可监控的。当然你自己也可以声明这个对象的属性为observable的,但它就成了一个依赖监控对象了。一个observableArray 仅仅...
阅读全文
摘要:前言1.创建一个ViewModel 2.为ViewModel创建一个声明式绑定的简单的ViewThe name is 3.激活Knockoutko.applyBindings(myViewModel);4.查看运行效果Observables监控属性 现在已经知道如何创建一个简单的view model并且通过binding显示它的属性了。但是KO一个重要的功能是当你的view model改变的时候能自动更新你的界面。当你的view model部分改变的时候KO是如何知道的呢?答案是:你需要将你的model属性声明成observable的, 因为它是非常特殊的JavaScript objects.
阅读全文