摘要:
在本系列的前面两篇文章(《简单类型+复杂类型》、《数组》)我们通过创建的实例程序模拟了ASP.NET MVC默认使用的DefaultModelBinder对简单类型、复杂类型以及数组对象的Model绑定。现在我们按照相同的方式来分析基于集合和字典类型的Model绑定是如何实现的。[源代码从这里下载][本文已经同步到《How ASP.NET MVC Works?》中]一、集合这里的集合指的是除数组和字典之外的所有实现IEnumerable<T>接口的类型。和基于数组的Model绑定类似,ValueProvider可以将多个同名的数据项作为集合的元素,基于索引(基零整数和字符串)的数据
阅读全文
posted @ 2012-05-31 09:22
HackerVirus
阅读(312)
推荐(0)
摘要:
。如果在Controllers文件夹下面有超过两位数controller,即便采用良好的命名规范,或者用子文件夹的形式区分不同功能的控制器,还是会影响项目的可阅读性和可维护性。因此,在一些场景下,如果能把与某功能相关的文件分离到一个独立的项目中是非常有用的。Asp.Net MVC提供了Areas(区域)的概念达到这一目的。一个典型的场景Web应用通常会有前台(面向用户)和后台(面向管理员)两部分,我们希望以/locahost/Admin开始的URL都为后台管理地址,因此我们也许会有这样的路由:?1234567891011routes.MapRoute( //Admin Route"A
阅读全文
posted @ 2012-05-31 09:21
HackerVirus
阅读(219)
推荐(0)
摘要:
被折腾的日子 以前不觉得js、css版本号的处理是个问题,直到最近被折磨的吐血,才发现往往不是问题的地方恰好就是问题所在。 以前接触的项目js和css一直都是放在项目下面的js和css文件夹下,没有版本号,风平浪静,现在的项目,为js和css单独搭建了一台服务器,好像还有什么nginx,竟然能把所有的js和css缓存起来,你说缓存会失效吧,他总是不在我想要的时候失效,出现bug总是因为缓存失效。 项目之前是用一个可配置的版本号来处理这个问题,版本号放在 appSettings里面,这样出了几个小问题 1 修改版本号时需要iis重启 2好几台服务器,appSettings 不能批量上传,谁也不敢
阅读全文
posted @ 2012-05-31 09:14
HackerVirus
阅读(930)
推荐(0)
摘要:
一个简单的自动化测试架构的实现(C#) 翻看自己以前写的代码,突然间看到以前模拟的一个自动化测试架构的实现。幸好自己有写学习笔记的习惯,整理一下,贴出来,以备忘。特性会作为元数据嵌入到程序集,通过反射机制能够得到这些元数据信息。程序员可以自己定义特性,对特性进行某种格式的定义,并利用特性来影响自己编写代码编译后的程序集(assmbly)自定义特性在编译时作为元数据被编译到程序集中,运行时通过反射机制被读取。这应该是这个自动化测试架构的立足点。特性的应用:特性一般会在设计框架时很有用。 1. 利用反射机制,作为特性的元数据可以反过来在运行时影响代码的运行配置项,(例如:Windows Fo...
阅读全文
posted @ 2012-05-30 22:23
HackerVirus
阅读(396)
推荐(0)
摘要:
先说下场景,C#中为什么要使用Aop,而我又是在哪里使用Aop?本人只是想拦截实体类的Set的方法,然后在Set之前,调用一下其它方法,把值赋给另一个对象。而我做的都是在实体类的基类里处理:比如:public classOrmBase让所有继承这个基类的实体类都具有Orm操作功能,再加上一个小小特殊的要求处理,属性Set时,需要对另一对象赋值。如果说,我这样实现:在OrmBase中可以提供方法,让所有的子类的属性都这样操作:public class Users:OrmBase{public int _ID;public int ID{get;set{ base.SetXX(value);}}不
阅读全文
posted @ 2012-05-30 22:22
HackerVirus
阅读(353)
推荐(1)
摘要:
对python的认识应该从url.py和views.py开始,其他的.py文件均用来封装各种各样的template。而这些.py文件又可以当作一个封装的类导入到views.py.首先需要理解的是python的工作原理,python是一门非常指着的面向对象语言,一切皆是对象,django框架基本上都是mvc的衍生物。m- modalv- views-urls.py + views.py --> templatesc-- controlpython的helloworld,helloworld范例能很好的体现python的工作原理:http://172.16.21.80:2222/time/一
阅读全文
posted @ 2012-05-30 22:17
HackerVirus
阅读(319)
推荐(0)
摘要:
Win8风格的Web启动界面主要用到jquery.animation.easing.js 和jquery.mousewheel.min.js 两个jQuery插件。页面布局HTML<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type=
阅读全文
posted @ 2012-05-30 18:05
HackerVirus
阅读(259)
推荐(0)
摘要:
前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList。PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行分页,而且非常简单好用。从NuGet上,可以获取两个DLL:PagedList.dll和PagedList.Mvc.dll。PagedList.dll提供分页的核心操作,PagedList.Mvc.dll是一个辅助类库,在创建分页的UI时候提供简单、可扩展的创建方法。不过PagedList.dll可以用于MVC2及其以上,但是PagedList .Mvc.dll只能用于MVC3(及其以上)。 使用
阅读全文
posted @ 2012-05-30 18:03
HackerVirus
阅读(1623)
推荐(0)
摘要:
在阅读《CLR via C# (第三版)》第132页看到dynamic这个类型,感觉挺有用的。记录下来日后查用以及跟园友们分享,内容如下: 为了方便开发人员使用反射或者与基本组件通信,C#编译器允许将一个表达式的类型标记为 dynamic。还可以将一个表达式的结果放到一个变量中,并将变量的类型标记为dynamic。然后,可以用这个 dynamic 表达式/变量调用一个成员,比如字段、属性/索引器、方法、委托以及一元/二元/转换操作符。代码用 dynamic 表达式/变量来调用一个成员时,编译器会生成特殊的 IL 代码来描述所需的操作。这种特殊的代码成为 payload(有效载荷)。在运行时,.
阅读全文
posted @ 2012-05-30 13:54
HackerVirus
阅读(289)
推荐(0)
摘要:
windows8 metro开发资源目前还是以MSDN为主,做了一个list方便自己点击,朋友们也可以收藏,欢迎一起交流。我会随时更新1、开发环境 系统环境: Windows 8 Consumer Preview (截止2012年5月30号官方发布的最新版本)从VHD启动win8的方法win7,win8双系统的方法用虚拟机(vmware)装win8的方法 以上有3种实现win8安装的方式,个人推荐用vhd的方式,这是在性能和对磁盘分区影响的一个折衷的方式。 开发工具: Microsoft Visual Studio 11 Beta 有MSDN订阅账号的同学可以下载旗舰版的2、开发文档C...
阅读全文
posted @ 2012-05-30 13:52
HackerVirus
阅读(219)
推荐(1)