1. Rout
    1. URL
    2. Routing
      1. routes.MapRoute
      2. parameter
      3. Variable-Length
      4. Namespace
      5. Constraining
        1. Regular Expression
        2. Specific Values
        3. Using HTTP Methods
        4. Custom Constraint
        5. Disk Files
        6. Bypassing the Routing System
    3. Area (Module)
  2. Controller
    1. Filter
    2. Custom Controller Factory
    3. Handling Unknown Actions
    4. Sessionless Controllers
    5. Asynchronous Controllers
      1. IAsyncController
      2. AsyncController,
        1. <Action>Async
        2. <Action>Completed
          1. Passing Parameters from the Async to the Completed Method
      3. timeout
        1. set time out
          1. [AsyncTimeout(10000)]
          2. [NoAsyncTimeout]
        2. handle timeout exception
      4. Aborting Asynchronous Operations
        1. AsyncManager.Finish
  3. Model
    1. Mode template
      1. @Html.DisplayFor
      2. Display
      3. Editor
      4. EditorFor
      5. Label
      6. LabelFor
      7. DisplayText
      8. For model
        1. DisplayForModel
        2. EditorForModel
        3. LabelForModel
      9. Using Model Metadata
        1. [HiddenInput]
        2. [HiddenInput(DisplayValue=false)]
        3. [ScaffoldColumn(false)]
        4. [Display(Name="Date of Birth")]
        5. [DataType(DataType.Date)]
          1. DateTime
          2. Date
          3. Time
          4. Text
          5. MultilineText
          6. Password
          7. Url
          8. EmailAddress
      10. Custom Editor Template
        1. DisplayTemplates
        2. EditorTemplates
        3. UIHint
      11. Replacing the Built-in Templates
      12. DataAnnotationsModelMetadataProvider
    2. Model Binding
      1. IModelBinder
        1. DefaultModelBinder.
      2. Data come from
        1. Request.Form
          1. RouteData.Values
          2. Request.QueryString
          3. Request.Files
      3. Simple type
        1. default prefix
        2. select prefix
        3. Selectively Binding Properties
        4. Exclude properties
      4. array
      5. Dictionary
      6. Invoking Model Binding
      7. select data source for binding
        1. FormCollectionData
      8. FileUploadBinding
      9. Customizing the Model Binding System
        1. IValueProvider
    3. Model Validation
      1. Build-in
        1. Explicitly Validating a Model
          1. ModeState.AddModelError
        2. Validation Rules Using Metadata
          1. Custom Property Validation Attribute
          2. build-in attribute
          3. Required
          4. RegularExpression
          5. Range
          6. Compare
          7. StringLength
          8. Self-validating Model
          9. inherit
          10. IValidatableObject
          11. Model Validation Attribute
      2. Alternative Validation Techniques
        1. Model Binder
          1. inherit DefaultModelBinder
          2. ModelBinders.Binders.Add
        2. Custom Validation Provider
          1. inherit
          2. ModelValidatorProvider
          3. return
          4. return list of ModelValidator base on ContainerType or Model Type
          5. ModelValidator
          6. return list of
          7. ModelValidationResult
          8. PropertyValidator same as ModeValidator
          9. properties
          10. PropertyName
          11. ContainerType
          12. ModelType
          13. ModelValidator
          14. for
          15. Model
          16. override
          17. Validate
          18. add ModelValidationResult[] to error list
          19. Property
          20. override
          21. Validate
          22. return list of ModelValidationResult
          23. ModelValidationResult
          24. register on global
      3. Client side
        1. Client-Side Validation
          1. enable/disable
          2. web.config
          3. global
          4. override on view
          5. Customizing
          6. add more in view
          7. Required
          8. Length
          9. Range
          10. Regex
          11. Equalto
          12. Email
          13. Url
          14. Date
          15. Number
          16. Digits
          17. Creditcard
          18. Model Attributes That Support Client-Side Validation
          19. inherit
          20. IClientValidatable
          21. example
          22. Subtopic 2
          23. Write javascript
          24. javascript
          25. server side
          26. Remote Validation
      4. display error message on view
  4. View
    1. Ajax
      1. Unobtrusive
      2. jQuery
      3. Knockout
    2. engine
      1. IViewEngine
        1. ViewEngineResult
      2. IView
      3. ViewEngineResult
    3. HTML Helpers
      1. Inline HTML Helper
      2. External Helper Method
      3. Built-in HTML Helpers
        1. Creating Forms
        2. Checkbox
        3. Hidden field
        4. Radio button
        5. Password
        6. Text area
        7. Text box
        8. Strong type
          1. Drop-down list
          2. Multiple-select
        9. link
          1. Url.Content
          2. Html.ActionLink
          3. Url.Action
          4. Html.RouteLink(
          5. WebGrid Helper
        10. Crypto
        11. WebMail
        12. Json
        13. ServerInfo
        14. WebImage
    4. @Sections
      1. ------------>
        1. @RenderSection("Header")
    5. Partial Views
      1. @Html.Partial("MyPartial")
    6. Child Actions
      1. ChildActionOnly]
        1. return PartialView(
      2. Rendering a Child Action
        1. @Html.Action("Time")
  5. Security
    1. Hack
    2. Authentication & Authorization
      1. Forms Authentication
        1. cookie
          1. FormsAuthentication.Decrypt return
          2. FormsAuthenticationTicket
          3. Name
          4. CookiePath
          5. Expiration
          6. Expired
          7. IsPersistent
          8. IssueDate
          9. UserData (string)
          10. Version
        2. Setting Up
          1. config properties
          2. name
          3. timeout
          4. slidingExpiration
          5. domain
          6. path
          7. loginUrl
          8. cookieless
          9. requireSSL
        3. Handling Login Attempts
          1. 1. Display a login prompt.
          2. 2. Receive a login attempt.
          3. 3. Validate the incoming credentials.
          4. 4. If the credentials are valid, call FormsAuthentication.SetAuthCookie(), which will give the visitor an authentication cookie. Then, redirect the visitor away from the login page.
          5. 5. If the credentials are invalid, redisplay the login screen with a suitable error message.
      2. provider
        1. Membership,
          1. SqlMembershipProvider)
          2. ActiveDirectoryMembershipProvider).
          3. Oracle,
          4. NHibernate,
          5. XML
        2. Roles,
        3. Profiles,
          1. anonymousIdentification=true
    3. Explained: Forms Authentication in ASP.NET 2.0
  6. Build-in Objects
    1. IController
      1. Controller
        1. Action methods:
          1. ActionResult
          2. ViewResult
          3. PartialViewResult
          4. RedirectToRouteResult
          5. RedirectResult
          6. ContentResult
          7. FileResult
          8. JsonResult
          9. JavaScriptResult
          10. HttpUnauthorizedResult
          11. HttpNotFoundResult
          12. HttpStatusCodeResult
          13. EmptyResult
        2. Action results:
        3. Filters:
        4. IPrincipal (User)
        5. ViewBag
        6. ViewData
          1. ModelState (ModelStateDictionary)
        7. View function
          1. return
          2. ViewResult
          3. View
          4. TempData
          5. ViewBag
          6. ViewData type of ViewDataDictionary
          7. Model
          8. TemplateInfo
          9. FormattedModelValue
          10. GetFullHtmlFieldId()
          11. GetFullHmlFieldName()
          12. HtmlFieldPrefix
          13. ModelMetadata
          14. AdditionalValues
          15. IEnumerable<ModelMetadata> Properties
          16. ModelState
        8. Input
          1. from function parameters
          2. RequestContext same same as ControllerContext
          3. RouteData
          4. "Controller"
          5. "action"
          6. ...
          7. Route (RouteBase)
          8. Values (RouteValueDictionary)
          9. HttpContext
          10. Request
          11. QueryString
          12. Form
          13. Cookies
          14. HttpMethod
          15. Headers
          16. Url
          17. UserHostAddress
          18. File
          19. IsAjaxRequest())
          20. Response
          21. Application
          22. Cache
          23. Items
          24. Session
          25. invoke model binding
        9. ModelState
    2. View
      1. ModelMetadata
        1. DataTypeName
        2. DisplayFormatString
        3. DisplayName
        4. EditFormatString
        5. HideSurroundingHtml
        6. Model
        7. NullDisplayText
        8. ShowForDisplay
        9. ShowForEdit
        10. TemplateHint
        11. funcion AdditionalValues
      2. ModelMetadataProvider
        1. DataAnnotationsModelMetadataProvider
          1. Localization With ASP.NET MVC
    3. Filter
      1. Authorization
        1. IAuthorizationFilter
          1. AuthorizationContext
          2. Controller
          3. HttpContext
          4. IsChildAction
          5. RequestContext
          6. RouteData
          7. Built-in Authorization Filter
          8. Users
          9. Roles
      2. Result
      3. Exception
        1. IExceptionFilter
          1. ExceptionContext
          2. ActionDescriptor
          3. Result
          4. Exception
          5. ExceptionHandled
      4. Using Global Filters
      5. Built-in Filters
        1. RequireHttps
        2. OutputCache
        3. ValidateInput
        4. ValidationAntiForgeryToken
        5. AsyncTimeout
        6. NoAsyncTimeout
        7. ChildActionOnlyAttribute
        8. HttpPost
        9. NonAction]
        10. Action
      6. IActionFilter
      7. IAuthorizationFilter
      8. IExceptionFilter
      9. IResultFilter
  7. Unobtrusive Ajax
    1. Form
      1. ajax option
        1. Confirm
        2. HttpMethod
        3. InsertionMode
        4. LoadingElementId
        5. LoadingElementDuration
        6. UpdateTargetId
        7. Url
    2. Ajax Link
    3. Working with JSON