| 第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 |