Top-selling MVC book from a top team at Microsoft--now fully updated
ASP.NET MVC 2.0 is now available and shipping with Visual Studio 2010 and .NET 4. A new update to Microsoft's Model-View-Controller technologies, MVC 2 enables developers to build dynamic, data-driven Web sites. "Professional ASP.NET MVC 2" shows you step-by-step how to use MVC 2. You'll learn both the theory behind MVC 2, as well as walk through practical tutorials, where you'll create a real-world application. Topics include transitioning from ASP.NET development, as well as an overview of related tools and technologies, including LINQ, jQuery, and REST.
This book is divided into two very broad sections, each comprising several chapters.
The first half of the book is concerned with introducing the MVC pattern and how ASP.NET MVC 2 implements that pattern.
Chapter 1 "NerdDinner" uses a small but complete application to walk you through how to build an ASP.NET MVC 2 application and some of the core concepts behind ASP.NET 2 MVC.
Chapter 2 "Model-View-Controller and ASP.NET" starts off with a description of the Model-View-Controller pattern, explaining the basic concepts of the pattern and providing a bit of its history. The chapter goes on to describe the state of the MVC pattern on the web today as it is implemented by various frameworks, such as ASP.NET MVC 2.
Chapter 3 "ASP.NET > ASP.NET MVC" then covers the ways that ASP.NET MVC is different from ASP.NET Web Forms.
Chapter 4 "Routes and URLs" digs deep into routing to describe the role that URLs play in your application and how routing figures into that. It also differentiates routing from URL rewriting and covers a bit on extending routing and writing unit tests for routes.
Chapter 5 "Controllers" takes a look at controllers and controller actions-what they are, and how to write them. It also covers action results, which are returned by controller actions and what they are used for.
Chapters 6 "Views" and 7 "Ajax" cover views and view engines, and then add a little flavor on top by examining the role that AJAX plays in your views.
The second half of the book focuses entirely on advanced techniques and extending the framework.
Chapter 8 "Filters" goes into detail on action filters, which provide an extensibility point for adding cross-cutting behaviors to action methods.
Chapter 9 "Securing Your Application" covers security and good practices for building a secure application.
Chapter 10 "Test Driven Development with ASP.NET MVC" provides a brief introduction to Test Driven Development (TDD) as it applies to ASP.NET MVC.
Chapter 11 "Testable Design Patterns" shows you real-world patterns and practices for building applications that are testable.
Chapter 12 "The Best of Both Worlds: Web Forms and MVC Together" discusses how Web Forms and MVC work together.
Chapter 13 "What's New in ASP.NET MVC 2" covers what's new in MVC 2.
This book is for web developers who are looking to add more complete testing to their web sites, and who are perhaps ready for "something different."
In some places, we assume that you're somewhat familiar with ASP.NET WebForms, at least peripherally. There are a lot of ASP.NET WebForms developers out there who are interested in ASP.NET MVC so there are a number of places in this book where we contrast the two technologies. Even if you're not already an ASP.NET developer, you might still find these sections interesting for context, as well as for your own edification as ASP.NET MVC may not be the web technology that you're looking for.
CHAPTER 1: NERDDINNER 1
File ? New Project 6
Creating the Database 14
Building the Model 21
Controllers and Views 37
Create, Update, Delete Form Scenarios 57
ViewData and ViewModel 85
Partials and Master Pages 91
Paging Support 100
Authentication and Authorization 109
AJAX Enabling RSVPs Accepts 118
Integrating an AJAX Map 127
Unit Testing 146
NerdDinner Wrap-Up 165
CHAPTER 2: MODEL-VIEW-CONTROLLER AND ASP.NET 167
What Is Model-View-Controller? 167
MVC on the Web Today 169
ASP.NET MVC: The New Kid on the Block 173
CHAPTER 3: ASP.NET > ASP.NET MVC 179
Abstraction: What Web Forms Does Well 179
The Leak: Where Web Forms Doesn?t Exactly Fit 185
Back to Basics: ASP.NET MVC Believes? 188
Caring about Testability 190
Common Reactions to ASP.NET MVC 192
Why ?(ASP.NET > ASP.NET MVC) == True? 193
CHAPTER 4: ROUTES AND URLS 203
Introduction to Routing 204
Under the Hood: How Routes Tie Your URL to an Action 226
Advanced Routing with Custom Constraints 227
Route Extensibility 228
Using Routing with Web Forms 235
CHAPTER 5: CONTROLLERS 243
History of the Controller 243
Defining the Controller: The IController Interface 245
The ControllerBase Abstract Base Class 247
The Controller Class and Actions 248
The ActionResult 252
Action Invoker 260
CHAPTER 6: VIEWS 279
What a View Does 279
What a View Shouldn?t Do 281
Specifying a View 281
Strongly Typed Views 283
HTML Helper Methods 285
The View Engine 299
New View Engine or New ActionResult? 309
CHAPTER 7: AJAX 311
When Ajax Is Cool 312
When It?s Not 313
Ajax Examples 314
CHAPTER 8: FILTERS 341
Filters Included with ASP.NET MVC 341
Writing a Custom Action Filter 354
Writing a Custom Authorization Filter 355
Writing a Custom Exception Filter 357
Filter Ordering 358
Filter Naming 359
CHAPTER 9: SECURING YOUR APPLICATION 363
This Is a War 365
Threat: Cross-Site Scripting (XSS) 372
Threat: Cross-Site Request Forgery 381
Threat: Cookie Stealing 386
Threat: Over-Posting 387
Keeping Your Pants Up: Proper Error Reporting and the Stack Trace 389
Securing Your Controllers, Not Your Routes 390
Summary: It?s Up to You 392
CHAPTER 10: TEST DRIVEN DEVELOPMENT WITH ASP.NET MVC 395
A Brief Introduction to TDD 396
Applying TDD to ASP.NET MVC 404
CHAPTER 11: TESTABLE DESIGN PATTERNS 413
Why You Should Care About Testability 413
You Want to Write Testable Code 416
Using Tests to Prove You?re Done 417
Designing Your Application for Testability 417
Testable Data Access 422
Implementing Business Logic with the Service Layer 429
CHAPTER 12: BEST OF BOTH WORLDS: WEB FORMS AND MVC TOGETHER 441
How Is It Possible? 442
Including MVC in Existing Web Forms Applications 442
Adding Web Forms to an Existing ASP.NET MVC Application 448
Sharing Data between Web Forms and MVC 451
Migrating from Web Forms to MVC 456
CHAPTER 13: WHAT?S NEW IN ASP.NET MVC 2 471
Performance: Asynchronous Controller Actions 486