第1章 |
S101 |
MVP(SC)模式中Presenter与View之间的交互 |
S102 |
迷你版的ASP.NET MVC框架 |
第2章 |
S201 |
通过路由实现请求地址与.aspx页面的映射 |
S202 |
基本路由注册 |
S203 |
在路由注册中指定约束 |
S204 |
针对现有物理文件的路由(关闭) |
S205 |
针对现有物理文件的路由(开启) |
S206 |
RouteCollection和Route的RouteExistingFiles属性对路由的影响 |
S207 |
注册需要被忽略的路由地址(未注册) |
S208 |
注册需要被忽略的路由地址(已注册) |
S209 |
通过注册的路由生成相应的URL |
S210 |
注册路由映射与查看路由信息 |
S211 |
UrlParameter.Optional与一般路由变量默认值的区别 |
S212 |
查看基于Area路由信息 |
S213 |
创建一个RouteHelper模拟UrlHelper的URL生成逻辑 |
S214 |
通过自定义Route对ASP.NET路由系统进行扩展 |
第3章 |
S301 |
Controller默认的异步执行方式 |
S302 |
利用DisableAsyncSupport属性实现Controller的同步执行 |
S303 |
如何提升命名空间的优先级(相同优先级命名空间下的多个同名Controller导致的异常) |
S304 |
如何提升命名空间的优先级(为当前ControllerBuilder指定优先匹配命名空间) |
S305 |
如何提升命名空间的优先级(在进行路由注册时指定优先匹配的命名空间) |
S306 |
Area中的Controllerr的命名空间与对应AdminAreaRegistration不匹配导致的异常 |
S307 |
移除AdminAreaRegistration的命名空间导致后备命名空间被使用 |
S308 |
创建一个自定义ControllerFactory模拟Controller默认激活机制 |
S309 |
IoC/DI在Unity中的体现 |
S310 |
创建基于Unity的ControllerFactory |
S311 |
创建基于Ninject的ControllerActivator |
S312 |
创建基于Ninject的DependencyResolver |
第4章 |
S401 |
通过UIHintAttribute特性设置模板名称 |
S402 |
通过HiddenInputAttribute特性设置“隐藏”元素(默认) |
S403 |
通过HiddenInputAttribute特性设置“隐藏”元素(DisplayValue=False) |
S404 |
通过DataTypeAttribute/DisplayFormatAttribute特性设置数据类型 |
S405 |
通过EditableAttribute/ReadonlyAttribute控制数据成员的读写性 |
S406 |
通过DisplayAttribute/DisplayNameAttribute特性设置显示名称 |
S407 |
通过AllowHtmlAttribute特性控制数据成员能否允许包含HTML |
S408 |
自定义MetadataAware特性定制Model元数据 |
S409 |
通过模板将布尔值显示为RadioButton |
S410 |
证明DataTypeName与模板名称的等效性 |
S411 |
根据Model元数据获取“候选模板名称”列表 |
S412 |
通过定制Model元数据和自定义模板实现预定义列表的呈现 |
S413 |
通过自定义ModelMetadataProvider定制Model元数据 |
第5章 |
S501 |
验证Action方法的有效性条件(针对方法本身) |
S502 |
验证Action方法的有效性条件(Controller仅仅实现IController接口) |
S503 |
验证Action方法的有效性条件(Controller继承自ControllerBase) |
第6章 |
S601 |
解析NameValueCollectionValueProvider指定前缀的Key(属性前缀) |
S602 |
解析NameValueCollectionValueProvider指定前缀的Key(索引前缀) |
S603 |
探测ChildActionValueProvider的值提供机制 |
S604 |
创建一个自定义ValueProviderFactory |
S605 |
针对数据类型的ModelBinder选择策略 |
S606 |
通过注册自定义来控制采用的ModelBinder |
S607 |
为数据类型注册匹配的ModelBinder |
S608 |
利用ModelBinderAttribute来提供指定的ModelBinder |
S609 |
Model绑定过程中对ModelState的设置 |
第7章 |
S701 |
利用自定义的DefaultModelBinder绑定简单类型参数 |
S702 |
利用自定义的DefaultModelBinder绑定复杂类型参数(没有针对参数的前缀) |
S703 |
利用自定义的DefaultModelBinderr绑定复杂类型参数(具有针对参数的前缀) |
S704 |
针对同名数据项的集合绑定 |
S705 |
利用自定义的DefaultModelBinder绑定集合类型参数(零基索引) |
S706 |
利用自定义的DefaultModelBinder绑定集合类型参数(文字索引) |
S707 |
利用自定义的DefaultModelBinder绑定字典类型参数 |
第8章 |
S801 |
手工参数验证(使用ValidationSummary显示错误消息) |
S802 |
手工参数验证(调用ValidationMessage方法显示错误消息) |
S803 |
手工参数验证(调用ValidationMessageFor方法显示错误消息) |
S804 |
手工参数验证(调用模板方法EditorForModel) |
S805 |
针对ValidationAttribute特性的“自动化”验证 |
S806 |
让被验证数据类型实现IValidatableObject接口 |
S807 |
让被验证数据类型实现IDataErrorInfo接口 |
S808 |
探测CompositeModelValidator采用的验证行为(属性成员没有通过验证) |
S809 |
探测CompositeModelValidator采用的验证行为(属性成员通过验证) |
S810 |
模拟Model绑定中的验证 |
第9章 |
S901 |
如何将多个同类ValidationAttribute特性应用到同一个目标元素上(未重写TypeId属性) |
S902 |
如何将多个同类ValidationAttribute特性应用到同一个目标元素上(重写了TypeId属性) |
S903 |
解析针对不同属性成员创建的ModelValidator |
S904 |
如何将ValidationAttribute特性应用到参数上 |
S905 |
一种Model类型,多种验证规则 |
S906 |
jQuery验证(以内联的方式指定验证规则) |
S907 |
jQuery验证(单独指定验证规则和错误消息) |
S908 |
自定义客户端验证 |
第10章 |
S1001 |
异步Action的定义(XxxAsync/XxxCompleted) |
S1002 |
异步Action的定义(Task返回值) |
S1003 |
异步Action的定义(采用async关键字) |
S1004 |
ActionInvoker的创建(未清空缓存) |
S1005 |
ActionInvoker的创建(先清空缓存) |
S1006 |
ActionInvoker对ControllerDescriptor的创建 |
S1007 |
ReflectedAsyncControllerDescriptor中的ActionDescriptor类型 |
S1008 |
AsyncController和ActionInvoker对异步Action的影响 |
S1009 |
以反射和表达式执行方法的性能差异 |
S1010 |
采用针对表达式树执行Action方法 |
第11章 |
S1101 |
不同情况下执行Action方法返回的ActionResult |
S1102 |
利用ContentResult实现主题定制 |
S1103 |
利用FileResult发布图片 |
S1104 |
利用JavaScriptResult实现动态JavaScript的执行 |
S1105 |
创建自定义View |
S1106 |
探测基于目录的View编译机制 |
S1107 |
创建一个简单的RazorView |
S1108 |
以IoC的方式激活View |
S1109 |
创建一个简单的RazorViewEngine |
第12章 |
S1201 |
验证Filter的提供机制 |
S1202 |
验证Filter的执行顺序 |
S1203 |
验证Filter的唯一性 |
S1204 |
通过自定义AuthenticationFilter实现Basic认证 |
S1205 |
通过ValidateInputAttribute控制对包含HTML标签的输入数据的验证 |
S1206 |
设置ActionExecutingContext的Result对整个ActionFilter链执行流程的影响 |
S1207 |
利用自定义的ExceptionFilter集成Enterprise Library进行异常处理(采用指定的Action方法响应异常) |
S1208 |
利用自定义的ExceptionFilter集成Enterprise Library进行异常处理(采用指定的View显示错误信息) |
S1209 |
利用自定义的ExceptionFilter集成Enterprise Library进行异常处理(以JSON格式返回错误信息) |
第13章 |
S1301 |
验证约束类型与具体RouteConstraint类型之间的映射关系 |
S1302 |
自定义针对Culture的约束 |
S1303 |
看看特性路由会生成怎样的Route对象(RouteAttribute应用到Action方法上) |
S1304 |
看看特性路由会生成怎样的Route对象(应用RouteAreaAttribute特性指定Area) |
S1305 |
看看特性路由会生成怎样的Route对象(RouteAttribute应用到Controller类型上) |
第14章 |
S1401 |
通过AOP的方式实现针对方法返回值的缓存 |
S1402 |
Vedio Mall |