contents
foreword
foreword to the first edition
preface
preface to the first edition
acknowledgments
about this book
about the authors
about the cover illustration
Part 1 High-speed fundamentals
1 High-speed beginner ramp-up
1.1 Welcome to ASP.NET MVC
1.2 The MVC pattern
1.3 Creating your first ASP.NET MVC 2 project
1.4 Creating controllers and actions
1.5 Creating views
1.6 Improving your application
1.7 Summary
2 Presentation model
2.1 The M in MVC
2.2 Delivering the presentation model
2.3 ViewData.Model
2.4 Representing user input
2.5 More complex models for both display and input
2.6 Summary
3 View fundamentals
3.1 Introducing views
3.2 Examining the ViewDataDictionary
3.3 Strongly typed views with a view model
3.4 Displaying view model data in a view
3.5 Using strongly typed templates
3.6 Summary
4 Controller basics
4.1 The anatomy of a controller
4.2 Storyboarding an application
4.3 Transforming a model to a view model
4.4 Accepting input
4.5 Testing controllers
4.6 Summary
5 Consuming third-party components
5.1 The MvcContrib Grid component
5.2 The SlickUpload component
5.3 Summary
6 Hosting ASP.NET MVC applications
6.1 Deployment scenarios
6.2 XCOPY deployment
6.3 Deploying to IIS 7
6.4 Deploying to IIS 6 and earlier
6.5 Summary
7 Leveraging existing ASP.NET features
7.1 ASP.NET server controls
7.2 State management
7.3 Tracing and debugging
7.4 Implementing personalization and localization
7.5 Implementing ASP.NET site maps
7.6 Summary
Part 2 Journeyman techniques
8 Domain model
8.1 Understanding the basics of domain-driven design
8.2 A sample domain model
8.3 Summary
9 Extending the controller
9.1 Controller extensibility
9.2 Controller actions
9.3 Action, authorization, and result filters
9.4 Action selectors
9.5 Using action results to reduce complexity
9.6 Summary
10 Advanced view techniques
10.1 Eliminating duplication in the view
10.2 Building query-string parameter lists
10.3 Exploring the Spark view engine
10.4 Summary
11 Security
11.1 Authentication and authorization
11.2 Cross-site scripting (XSS)
11.3 Cross-site request forgery (XSRF)
11.4 Summary
12 Ajax in ASP.NET MVC
12.1 Diving into Ajax with an example
12.2 Ajax with ASP.NET Web Forms
12.3 Ajax in ASP.NET MVC
12.4 Summary
13 Controller factories
13.1 What are controller factories?
13.2 Creating a custom controller factory
13.3 Enabling dependency injection in your controllers
13.4 Creating a StructureMap controller factory
13.5 Creating a Ninject controller factory
13.6 Creating a Castle Windsor controller factory
13.7 Summary
14 Model binders and value providers
14.1 Creating a custom model binder
14.2 Using custom value providers
14.3 Summary
15 Validation
15.1 Validation with Data Annotations
15.2 Extending the ModelMetadataProvider
15.3 Client-side validation with ASP.NET Ajax
15.4 Summary
Part 3 Mastering ASP.NET MVC
16 Routing
16.1 What are routes?
16.2 Designing a URL schema
16.3 Implementing routes in ASP.NET MVC
16.4 Using the routing system to generate URLs
16.5 Testing route behavior
16.3 Using routing with existing ASP.NET projects
16.4 Summary
17 Deployment techniques
17.1 Employing continuous integration
17.2 Enabling push-button XCOPY deployments
17.3 Managing environment configurations
17.4 Enabling remote server deployments with Web Deploy
17.5 Summary
18 Mapping with AutoMapper
18.1 Introducing AutoMapper
18.2 Life before AutoMapper
18.3 AutoMapper basics
18.4 Summary
19 Lightweight controllers
19.1 Why lightweight controllers?
19.2 Managing common view data
19.3 Deriving action results
19.4 Using an application bus
19.5 Summary
20 Full system testing
20.1 Testing the user interface layer
20.2 Building maintainable navigation
20.3 Interacting with forms
20.4 Asserting results
20.5 Summary
21 Organization with areas
21.1 Creating a basic area
21.2 Managing links and URLs with T4MVC
21.3 Summary
22 Portable areas
22.1 Understanding the portable area
22.2 A simple portable area
22.3 Consuming portable areas
22.4 Creating an RSS widget with a portable area
22.5 Distributing the RssWidget
22.6 Interacting with the portable area bus
22.7 Summary
23 Data access with NHibernate
23.1 Functional overview of reference implementation
23.2 Application architecture overview
23.3 Domain model—the application core
23.4 NHibernate configuration—infrastructure of the application
23.5 UI is the presentation of the model
23.6 Pulling it together
23.7 Summary
Part 4 Cross-cutting advanced topics
24 Debugging routes
24.1 Extending the routing system
24.2 Inspecting routes at runtime
24.3 Summary
25 Customizing Visual Studio for ASP.NET MVC
25.1 Creating custom T4 templates
25.2 Adding a custom test project template to the new project wizard