摘要: .NET泛型或许是借鉴于C++泛型模版,借助它可以实现对类型的抽象化、泛型处理,实现了类型和方法之间的解耦。一个最经典的运用是在三层架构中,针对不同的领域模型,在基接口、基类中实现针对各个领域模型的泛型处理。 本篇主要包括:■ 为什么需要泛型 ※ 不用泛型 ※ 使用泛型 ※ 泛型的运行时本质■ 泛型语法■ 典型的泛型类 为什么需要泛型 不用泛型 来看一个比较类型的方法。 public cl... 阅读全文
posted @ 2014-07-17 10:43 Darren Ji 阅读(2222) 评论(1) 推荐(0) 编辑
摘要: 在遍历数组、集合的时候,通常要获取元素的索引,本篇体验使用Knockout获取索引的2种方法。 假设有这样的一个模型: namespace UseIndex.Models{ public class Student { public int Id { get; set; } public string Name { get; set; } }}在Ho... 阅读全文
posted @ 2014-07-16 23:05 Darren Ji 阅读(3117) 评论(2) 推荐(0) 编辑
摘要: 在" .NET的堆和栈01,基本概念、值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配。我们知道:当执行一个方法的时候,值类型实例会在"栈"上分配内存,而引用类型实例会在"堆"上分配内存,当方法执行完毕,"栈"上的实例由操作系统自动释放,"堆"上的实例由.NET Framework的GC进行回收。 在" .NET的堆和栈02,值类型和引用类型参数传递以及内存分配"中,我们了... 阅读全文
posted @ 2014-07-16 18:01 Darren Ji 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 在" .NET的堆和栈01,基本概念、值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配。我们知道:当执行一个方法的时候,值类型实例会在"栈"上分配内存,而引用类型实例会在"堆"上分配内存,当方法执行完毕,"栈"上的实例由操作系统自动释放,"堆"上的实例由.NET Framework的GC进行回收。 在" .NET的堆和栈02,值类型和引用类型参数传递以及内存分配"中,我们了... 阅读全文
posted @ 2014-07-16 12:23 Darren Ji 阅读(764) 评论(0) 推荐(0) 编辑
摘要: 在" .NET的堆和栈01,基本概念、值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配。我们知道:当执行一个方法的时候,值类型实例会在"栈"上分配内存,而引用类型实例会在"堆"上分配内存,当方法执行完毕,"栈"上的实例由操作系统自动释放,"堆"上的实例由.NET Framework的GC进行回收。而本篇的重点要放在:值类型和引用类型参数的传递,以及内存分配。 主要包括:■... 阅读全文
posted @ 2014-07-16 01:37 Darren Ji 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 当我们对.NET Framework的一些基本面了解之后,实际上,还是很有必要了解一些更底层的知识。比如.NET Framework是如何进行内存管理的,是如何垃圾回收的......这样,我们才能写出更高性能的程序。 在.NET Framework中,有2个地方帮我们保存管理数据:一个是"堆",也叫"托管堆",由.NET Framework的垃圾收集器(Garbage Collection, G... 阅读全文
posted @ 2014-07-15 11:35 Darren Ji 阅读(1625) 评论(0) 推荐(1) 编辑
摘要: Jeffrey Zhao在"你的字典里有多少元素?"一文中,提到了他在面试时问过的一个问题:List是怎么存放元素?不幸的是,自己也回答不出来,只知道怎么用,却不知道为啥这样用,很明显的"知其然而不知其所以然"。于是,扒了一段List的一段源码来一窥究竟。 using System;using System.Diagnostic;using System.Collections.ObjectMod... 阅读全文
posted @ 2014-07-14 23:26 Darren Ji 阅读(3676) 评论(0) 推荐(3) 编辑
摘要: 假设需要为用户创建专属文件夹,文件夹名为用户名,并且需要根据用户类型在不同的文件夹下创建目标文件夹。 在F盘创建"Users"文件夹,在其中创建"Gold"文件夹,用来归类"金牌会员",创建"Silver",用来归类"银牌会员"。 关于用户的Model。 using System.ComponentModel.DataAnnotations;namespace MvcApplication1.... 阅读全文
posted @ 2014-07-14 18:03 Darren Ji 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 在项目中,当我们想获取IEnumerable集合的时候,这个集合有可能是null。但通常的做法是返回一个空的集合。 假设有这样一个场景:当商店不营业时,返回一个空的IEnumerable,而当商店正常营业时,就返回一个非空的IEnumerable。 Product模型。 public class Product { public int Id { get; set; } ... 阅读全文
posted @ 2014-07-14 11:39 Darren Ji 阅读(1476) 评论(0) 推荐(1) 编辑
摘要: Angularjs是一个前端的Javascript MVC 库和框架,使前端得到更好的设计、维护和测试。它的核心特性有:MVC、双向数据绑定、指令和语义化标签、模块化工具、依赖注入、HTML模板,以及对常用工具的封装,例如$http、$cookies、$location等。本篇体验Angularjs在MVC中的基本使用。 通过NuGet,输入关键字Angularjs,安装"Angular JS ... 阅读全文
posted @ 2014-07-13 20:24 Darren Ji 阅读(1154) 评论(6) 推荐(0) 编辑
摘要: 如果想在MVC中使用图表显示的话,DotNet.HighCharts是不错的选择。DotNet.HighCharts是一个开源的JavaScript图表库,支持线型图表、柱状图标、饼状图标等几十种图标。本篇实现一个简单的区域图表。 在NuGet中输入关键字"DotNet.HighCharts"。 安装完后,在Scripts和程序集下多了HighCharts相关文件。 HomeControlle... 阅读全文
posted @ 2014-07-13 00:01 Darren Ji 阅读(2256) 评论(0) 推荐(0) 编辑
摘要: 借助"甘特图",可以直观地了解任务、活动、工作的进度。dhtmlxGantt是一个开源的Javacirpt库,能帮助我们快速创建"甘特图",本篇体验在MVC中的实现。主要包括:认识"甘特图"下载dhtmlxGantt包把dhtmlxGantt相关CSS、JS、样式引入到_Layout.cshtml中... 阅读全文
posted @ 2014-07-12 14:49 Darren Ji 阅读(10396) 评论(4) 推荐(0) 编辑
摘要: 本篇使用Knockout在MVC下实现"Hello World",对应的官网实例在这里。 当次数达到3: View视图 页面包含三个部分:1、显示点击按钮的次数2、button按钮,每点击一次,显示的次数加1,并且,当次数达到3次,button禁用3、最下面的div只有在次数达到3的时候才显示,并提供"重置"按钮 You've clicked times Click me Tha... 阅读全文
posted @ 2014-07-11 20:20 Darren Ji 阅读(1017) 评论(0) 推荐(0) 编辑
摘要: 在"MVC实现多选下拉框"中,主要是多选下拉框的显示,而实际情况通常是:选择多个选项提交后,需要在编辑页把所有选中的项显示出来。 模拟这样的一个场景:一个车迷可能有多个自己喜欢的汽车品牌。 关于车迷的Model: namespace MvcApplication1.Models{ public class CarFan { public int Id { get; s... 阅读全文
posted @ 2014-07-11 19:30 Darren Ji 阅读(3303) 评论(1) 推荐(1) 编辑
摘要: 本篇使用Knockout在MVC下实现"Hello World",对应的官网实例在这里。 View视图 Knockout的一个特点是:声明式绑定,即Declarative bindings。暂且不管业务逻辑,先把关注点放在界面UI上,即"MVVM"模式中的第二个"V", 也就是View视图。根据Knockout的语法,创建如下界面: First name: Las... 阅读全文
posted @ 2014-07-11 11:35 Darren Ji 阅读(1242) 评论(0) 推荐(0) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为"在三层架构下... 阅读全文
posted @ 2014-07-10 18:18 Darren Ji 阅读(2658) 评论(0) 推荐(0) 编辑
摘要: const和readonly经常被用来修饰类的字段,两者有何异同呢? const 1、声明const类型变量一定要赋初值吗?--一定要赋初值 public class Student { public const int age; }生成的时候,会报如下错:正确的应该这样写:public class Student { public const... 阅读全文
posted @ 2014-07-10 12:20 Darren Ji 阅读(518) 评论(2) 推荐(1) 编辑
摘要: yield关键字用于遍历循环中,yield return用于返回IEnumerable,yield break用于终止循环遍历。 有这样的一个int类型的集合: static List GetInitialData() { return new List(){1,2,3,4}; }需要打印出所有值大于2的元素。 不使用yield return的实... 阅读全文
posted @ 2014-07-09 08:35 Darren Ji 阅读(2232) 评论(0) 推荐(4) 编辑
摘要: 在C#中,当引用类型需要转换的时候,经常会用到关键字is、as以及显式强转。本篇来体验这三者的用法。 先来梳理.NET引用类型转换的"约定俗成",或者叫"惯例":● 子类可以隐式转换为父类/基类,也就是"里氏替换原则"所说的:子类必须能够替换其父类/基类。● 父类/基类转换为子类时,必须进行显式类型强转。 子类转换成父类 class Program { static vo... 阅读全文
posted @ 2014-07-08 14:15 Darren Ji 阅读(2141) 评论(0) 推荐(1) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为"在三层架构... 阅读全文
posted @ 2014-07-08 11:05 Darren Ji 阅读(1666) 评论(2) 推荐(4) 编辑
摘要: 在"MVC控制器传递多个Model到视图,使用ViewData, ViewBag, 部分视图, TempData, ViewModel, Tuple"中,体验了使用不同的方式传递多个Model,而ViewData、ViewBag、PartialView、TempData、ViewModel、Tuple都可以用来传递Model,如何取舍呢?本篇主要包括: 使用ViewData 使用ViewBa... 阅读全文
posted @ 2014-07-07 13:47 Darren Ji 阅读(2039) 评论(3) 推荐(4) 编辑
摘要: 在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层、BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构。于是就有了本篇: IDAL层 →IBaseRepository接口,基接口,提供泛型实现 所有的数据接口层的方法基本上是一样的,包括查询、分页查询、添加、批量添加、更新、批量更新、删除、批量删除等。所以,有必要针对所有的数据接口提炼... 阅读全文
posted @ 2014-07-07 11:24 Darren Ji 阅读(5556) 评论(2) 推荐(1) 编辑
摘要: 假设在一个页面上有众多内容,而我们只想把该页面上的表格内容打印出来,window.print()方法会把整个页面的内容打印出来,如何做到只打印表格内容呢? 既然window.print()只会打印整页的内容,何不把表格放在一个部分视图中,在部分视图中再调用window.print()方法。 Model很简单: public class Student { public in... 阅读全文
posted @ 2014-07-04 23:15 Darren Ji 阅读(2609) 评论(0) 推荐(0) 编辑
摘要: 在C#中,声明一个值类型或引用类型的变量,无论是否给这个变量赋初值,该变量都有默认值: 比如声明引用类型变量: string a,其等效于string a = null,string的默认值为null。比如声明值类型变量:int a, 其等效于int a = 0,int的默认值为0。 为什么需要让值类型可以为null? 来看需要让值类型为null的场景: 在数据库中,通常值类型允许为null... 阅读全文
posted @ 2014-07-04 17:55 Darren Ji 阅读(13164) 评论(1) 推荐(2) 编辑
摘要: ASP.NET Web API和WCF都体现了REST软件架构风格。在REST中,把一切数据视为资源,所以也是一种面向资源的架构风格。所有的资源都可以通过URI来唯一标识,通过对资源的HTTP操作(GET/HEAD、POST、PUT和DELETE),使资源的表征状态发生了改变,即Representational State Transfer,缩写为REST。 WCF从3.5以来,也体现了REST... 阅读全文
posted @ 2014-07-04 11:15 Darren Ji 阅读(2055) 评论(4) 推荐(1) 编辑
摘要: 今年的世界杯好看至极,充满着故事性、戏剧性。无论你平常踢不踢球,也不管你是否懂球,你总能从中获得些许的情感释放。世界杯似乎超越了足球本身,成为世界各地人们的"情感总和",一场场比赛牵动着无数人的心,赛场内比赛的跌宕起伏,赛场外球迷的喜怒哀乐。 而我们自己的国家队,似乎离世界杯的舞台渐行渐远。也就在世界杯期间,在场上人数占优的情况下,居然输给了默默无名的马里队,让人唏嘘不已。于是慨叹:中国足球的天... 阅读全文
posted @ 2014-07-03 11:25 Darren Ji 阅读(786) 评论(1) 推荐(1) 编辑
摘要: 在C#中,如果在方法参数前面加上ref关键字,说明参数传递的是引用,而不是值。如何理解呢? 参数是简单类型的例子 static void Main(string[] args) { string temp = "a"; Change(temp); Console.WriteLine(temp); ... 阅读全文
posted @ 2014-07-02 22:53 Darren Ji 阅读(2339) 评论(1) 推荐(1) 编辑
摘要: 当需要跨页面共享信息的时候,Session是首当其冲的选择,最典型的例子就是:在处理登录和购物车逻辑的时候需要用到Session。在MVC中,可以把处理Session的逻辑放在一个泛型基控制器中,但需要注意的是:在判断没有登录就跳转到登录页的时候,需要把出错控制器和登录控制器排除在外。 using System.Collections.Generic;using System.Web.Mvc;us... 阅读全文
posted @ 2014-07-01 22:48 Darren Ji 阅读(1620) 评论(0) 推荐(0) 编辑
摘要: 对int类型集合初始化,这样写: static void Main(string[] args) { var list = new List {0, 1}; foreach (var item in list) { Console.WriteLine(item); }... 阅读全文
posted @ 2014-07-01 13:44 Darren Ji 阅读(996) 评论(0) 推荐(2) 编辑
摘要: 反射允许我们在编译期或运行时获取程序集的元数据,通过反射可以做到:● 创建类型的实例● 触发方法● 获取属性、字段信息● 延迟绑定...... 如果在编译期使用反射,可通过如下2种方式获取程序集Type类型:1、Type类的静态方法Type type = Type.GetType("somenamespace.someclass"); 2、通过typeofType type = typeof(s... 阅读全文
posted @ 2014-07-01 11:39 Darren Ji 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 1、定义路由、路由规则 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default",... 阅读全文
posted @ 2014-06-30 17:18 Darren Ji 阅读(760) 评论(0) 推荐(0) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第八篇,... 阅读全文
posted @ 2014-06-29 00:17 Darren Ji 阅读(1616) 评论(0) 推荐(0) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第七篇,... 阅读全文
posted @ 2014-06-28 19:01 Darren Ji 阅读(1787) 评论(0) 推荐(3) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第六篇,... 阅读全文
posted @ 2014-06-28 10:55 Darren Ji 阅读(6508) 评论(1) 推荐(2) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第五篇,... 阅读全文
posted @ 2014-06-27 16:12 Darren Ji 阅读(1460) 评论(0) 推荐(1) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第四篇,... 阅读全文
posted @ 2014-06-27 11:10 Darren Ji 阅读(1790) 评论(0) 推荐(0) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第三篇,... 阅读全文
posted @ 2014-06-27 10:57 Darren Ji 阅读(2409) 评论(14) 推荐(2) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能。 本篇为系列第二篇,... 阅读全文
posted @ 2014-06-27 09:48 Darren Ji 阅读(2849) 评论(11) 推荐(3) 编辑
摘要: 本篇使用Repository设计MVC项目,使用Ninject作为DI容器,借助Moq进行单元测试。 模型和EF上下文 模型很简单: public class Foo { public int Id { get; set; } public string Name { get; set; } }EF上下文为:using System.Data.Entit... 阅读全文
posted @ 2014-06-26 18:29 Darren Ji 阅读(1130) 评论(1) 推荐(2) 编辑
摘要: SportsStore是《精通ASP.NET MVC3框架(第三版)》中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器、URL优化、导航、分页、购物车、订单、产品管理、图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离。本系列... 阅读全文
posted @ 2014-06-26 00:29 Darren Ji 阅读(7404) 评论(29) 推荐(7) 编辑

我的公众号:新语新世界,欢迎关注。