PacktLib: ASP.NET MVC 2 Cookbook

ASP.NET MVC 2 Cookbook


About the Authors

About the Reviewers


Working with the View


Using magic strings and the ViewData dictionary

Creating a strongly typed view

Decoupling a strongly typed view with a View model

Centralizing display logic with templated helpers

Using a partial view to segment view code

Rendering a child view with Html.RenderAction

Loading a view template from a database with NVelocity

Consuming a JSON with jQuery

Taking Action in Your Controllers


Exposing JSON using a JsonResult with Json.NET

A custom ActionResult to return an image

Specifying the size of an ImageResult

Creating a CAPTCHA system

Generating a PDF order summary

Implementing a controller factory for use with StructureMap



Creating a route to support a reporting engine

Making hackable URLs for a product catalog

Filter your matches with routing constraints

Using wildcard parameters to support slug URLs

Creating a 404 page via routing

Moving routes out of Global.asax

Supporting pagination in your URLs

Supporting content hierarchies with a custom RouteHandler

Creating a blacklist route constraint

Master Pages


How to create a master page

Determining the master page in the ActionResult

Controlling which master page is used with a view base class

Setting the master page from a controller base class

Passing data to the master page

Rendering data in a master page from another view

Creating nested master pages

Working with Data in the View


Reintroducing for and foreach

Handling an array of checkboxes

Handling an array of radio buttons

Working with a pageable set of data

How to navigate sortable data

Deleting a record with an intermediary "Are you sure?" page

Adding a jQuery delete link with confirmation

Master/detail page with inline details via jQuery and a partial view

Creating a master/detail page with modal pop-up and JSON

Working with Forms


Using HTML helpers to create forms

Building a custom HTML helper to display a WYSIWYG

Centralizing create and edit forms for reuse

Adding custom attributes to form elements

Defining a default button with jQuery

Hijaxing a form with jQuery

Performing an auto post-back with a select list

Autocomplete with jQuery UI

Simplifying Complex Applications


Centralized formatting of common types with templated helpers

Making templated helpers for custom types

Using areas to separate application components

Creating a "portable area" to use across multiple applications

Using input builders of MvcContrib

Generating forms with Html.InputForm()

Leaving breadcrumbs for your users with MvcSiteMap

Displaying tabular data in a grid

Validating MVC


Basic input validation

Data annotations

Client-side validation with jQuery

Custom validators

Remote validation with jQuery

Data Access and Storage


Mocking your data layer with NBuilder

Adding support for LINQ to SQL

Going old school with ADO.NET

XML documents as a data store

Application, Session, Cookies, and Caching


Keeping track of anonymous visitors versus logged-in users

Maintaining a user's information while at your site

Remembering a previous visitor

Caching your product catalog for faster response times

Using output caching to cache an entire page

Using partial views to cache pieces of a page individually

Exposing an application API to your presentation layer