<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Andrew Siemer</title><subtitle type="html" /><id>http://www.simple-talk.com/community/blogs/asiemer/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.simple-talk.com/community/blogs/asiemer/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.simple-talk.com/community/blogs/asiemer/atom.aspx" /><generator uri="http://communityserver.org" version="2.0.60217.2664">Community Server</generator><updated>2010-01-15T15:15:36Z</updated><entry><title>ASP.NET MVC Cookbook - public review</title><link rel="alternate" type="text/html" href="http://www.simple-talk.com/community/blogs/asiemer/archive/2010/04/19/90701.aspx" /><id>http://www.simple-talk.com/community/blogs/asiemer/archive/2010/04/19/90701.aspx</id><published>2010-04-19T12:51:02Z</published><updated>2010-04-19T12:51:02Z</updated><content type="html">&lt;p&gt;I have recently started writing another book.&amp;#160; The topic of this book is ASP.NET MVC.&amp;#160; This book differs from my previous book in that rather than working towards building one project from end to end - this book will demonstrate specific topics from end to end.&amp;#160; It is a recipe book (hence the cookbook name) and will be part of the &lt;a href="https://www.packtpub.com/books/cookbooks"&gt;Packt Publishing cookbook series&lt;/a&gt;.&amp;#160; An example recipe in this book might be how to consume JSON, creating a master /details page, jquery modal popups, custom ActionResults, etc.&amp;#160; Basically anything recipe oriented around the topic of ASP.NET MVC might be acceptable.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you are interested in helping out with the review process you can join the "ASP.NET MVC 2 Cookbook-review" group on Google here: &lt;a title="http://groups.google.com/group/aspnet-mvc-2-cookbook-review" href="http://groups.google.com/group/aspnet-mvc-2-cookbook-review"&gt;http://groups.google.com/group/aspnet-mvc-2-cookbook-review&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Currently the suggested TOC for the project is listed.&amp;#160; Also, chapters 1, 2, and most of 8 are posted.&amp;#160; Chapter 5 should be available tonight or tomorrow.&lt;/p&gt;  &lt;p&gt;In addition to reporting any errors that you might find (much appreciated), I am very interested in hearing about recipes that you want included, expanded, or removed (as being redundant or overly simple).&amp;#160; Any input is appreciated!&amp;#160; Hearing user feedback after the book is complete is a little late in my opinion (unless it is positive feedback of course).&lt;/p&gt;  &lt;p&gt;Thank you!&lt;/p&gt;&lt;img src="http://www.simple-talk.com/community/aggbug.aspx?PostID=90701" width="1" height="1"&gt;</content><author><name>asiemer</name><uri>http://www.simple-talk.com/community/user/Profile.aspx?UserID=21397</uri></author></entry><entry><title>Getting Spark View Engine to work with ASP.NET MVC</title><link rel="alternate" type="text/html" href="http://www.simple-talk.com/community/blogs/asiemer/archive/2010/01/31/89132.aspx" /><id>http://www.simple-talk.com/community/blogs/asiemer/archive/2010/01/31/89132.aspx</id><published>2010-01-31T14:41:00Z</published><updated>2010-01-31T14:41:00Z</updated><content type="html">&lt;blockquote&gt;&lt;p&gt;Method not found: 'Void System.Web.Mvc.ViewContext..ctor(System.Web.Mvc.ControllerContext, System.Web.Mvc.IView, System.Web.Mvc.ViewDataDictionary, System.Web.Mvc.TempDataDictionary)'&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I am finding that there are several complaints about getting Spark View Engine to work with ASP.NET MVC.&amp;nbsp; I had to tweak the Spark View Engine code base to get things running again.&lt;/p&gt;  &lt;p&gt;I had to download the spark view engine source code (&lt;a href="http://sparkviewengine.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27600"&gt;http://sparkviewengine.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27600&lt;/a&gt;).&amp;nbsp; Once I did that I went through each of the projects that had a reference to the 1.0 version of System.Web.Mvc assembly and updated to reference to point to System.Web.Mvc 2.0.&amp;nbsp; From there you can build the solution (in visual studio) and you will find that a whole bunch of tests start to fail.&amp;nbsp; You can attempt to fix them (by adding the additional TextWriter parameter you will find is now needed).&amp;nbsp; You will also see that the SparkView.cs file complains about a missing parameter.&amp;nbsp; In the Render method (line 100 of the source code I downloaded) I had to update the instantiation of the wrappedViewContext to look like this (add writer to the end of the list of parameters): &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Render(ViewContext viewContext, TextWriter writer)    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var wrappedHttpContext = new HttpContextWrapper(viewContext.HttpContext, this);     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var wrappedViewContext = new ViewContext(     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new ControllerContext(wrappedHttpContext, viewContext.RouteData, viewContext.Controller),     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; viewContext.View,     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; viewContext.ViewData,     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; viewContext.TempData,     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer); //&amp;nbsp; &amp;lt;-- add the writer to the end of the list of parameters     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;Once the code is updated you can run the build.cmd script that is in the root of the source you downloaded.&amp;nbsp; The build process will create a zip file in the build/dist folder.&amp;nbsp; Take those new dll's and add them to your website.&amp;nbsp; Things should work once again. &lt;/p&gt;&lt;img src="http://www.simple-talk.com/community/aggbug.aspx?PostID=89132" width="1" height="1"&gt;</content><author><name>asiemer</name><uri>http://www.simple-talk.com/community/user/Profile.aspx?UserID=21397</uri></author></entry><entry><title>Can you help me formulate a TOC for an ASP.NET MVC Cookbook</title><link rel="alternate" type="text/html" href="http://www.simple-talk.com/community/blogs/asiemer/archive/2010/01/15/86817.aspx" /><id>http://www.simple-talk.com/community/blogs/asiemer/archive/2010/01/15/86817.aspx</id><published>2010-01-15T17:15:36Z</published><updated>2010-01-15T17:15:36Z</updated><content type="html">&lt;p&gt;Hey there everyone.&amp;#160; I was recently tasked to pitch a book to my publisher.&amp;#160; As a first step I need to come up with an outline for the Table of Contents.&amp;#160; This book is the standard cookbook style with an added focus on the MVC side of ASP.NET.&amp;#160; I have been poking about at other similarly styled books to get some ideas.&amp;#160; I think comparing ASP.NET Web Forms to ASP.NET MVC would provide some folks with a good reference point when looking at the two ways of doing things.&amp;#160; &lt;/p&gt;  &lt;p&gt;(Thanks to my friend James Shaw for this idea.made my life easier)&lt;/p&gt;  &lt;p&gt;Below is what I have some up with so far.&amp;#160; Can you please take a quick look to make sure I haven't missed anything?&amp;#160; Perhaps more important than missing a topic.am I including too much?&amp;#160; Feel free to contact me directly with any comments at &lt;a href="mailto:asiemer@hotmail.com"&gt;asiemer@hotmail.com&lt;/a&gt; or leave a comment below. &lt;/p&gt;  &lt;p&gt;Thanks!&lt;/p&gt;  &lt;p&gt;1. &lt;strong&gt;Working with the View&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Discovering the problems of a non-strongly typed view&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Creating a strongly typed view&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Working with a ViewModel&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. How to use strongly typed input builders&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Create a custom input builder&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Consolidating view code into a partial view&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;7. Using the Spark view engine&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;8. Using the FubuMVC view engine&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;9. Exposing a view that returns an image&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;10. Creating a JSON result&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;11. Consuming a JSON view&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;12. Exposing a view that returns a PDF&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;2. &lt;strong&gt;Actions&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;3. &lt;strong&gt;Controllers&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;4. &lt;strong&gt;Routes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;5. &lt;strong&gt;Master Pages&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. How to create a master page&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Controlling which master page is used with a custom base page&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Working with Spark View Engine master pages&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;6. &lt;strong&gt;Working with data in the view&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Reintroducing for and foreach&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Displaying data from an xml file&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Displaying an array as a group of check boxes&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Displaying an array as a group of radio buttons&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Creating a page-able set of data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. How to sort data &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;7. Navigating to a specific page of data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;8. Deleting a record from a data set&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;9. Adding a javascript delete confirmation pop-up &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;10. Adding a modal window delete confirmation pop-up&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;11. Displaying a modal window to show a records details&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;12. Adding a totals row to the bottom of a set of data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;13. Using the free telerik grid&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;7. &lt;strong&gt;Working with Forms&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Posting a form to the appropriate action&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Setting the field tab order&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Setting a default button&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;8. &lt;strong&gt;MVC and templating&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Plugging in a new skin from the template gallery&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Using T4 to create strongly typed helpers&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Using T4MVC to destroy magic strings&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Creating a view template&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;9. &lt;strong&gt;Validation Recipes&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Validating with Data Annotation Validators&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Reporting validation errors with ViewData.ModelState&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Using Html.ValidationMessage to display validation errors&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Summarizing validation errors with Html.ValidationSummary&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Using the xVal validation framework&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Using Castle Validator for validation&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;7. Client side validation with JQuery Validation&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;8. Making a required field&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;9. Setting an acceptable range&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;10. Requiring the password and password verification fields to match&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;11. Using a regex pattern to validate data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;12. Forcing a choice to be made in a drop down menu&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;10. &lt;strong&gt;Managing large applications with Areas&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Creating a separate project as an area&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Creating an area in the same project&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Using areas to manage segments of your site&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Creating portable areas to compartmentalize functionality&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;11.&lt;strong&gt; Maintaining state&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Working with application wide information&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Maintaining a user's information during their session&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Using cookies to remember a user&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Managing state in a web farm scenario using SQL Server&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;12. &lt;strong&gt;Error Handling&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Handling errors in your code&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Handling errors for a view&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Handling errors in your application&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Showing friendly error information&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Using Error Logging Modules and Handlers (ELMAH) to deal with unhandled exceptions&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Reporting caught exceptions to ELMAH&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;13.&lt;strong&gt; Security&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Using membership and roles to manage users&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Using windows authentication&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Restricting access to all pages&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Restricting access to selected pages&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Restricting access to pages by role&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Restricting access to a controller&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;7. Restricting access to a selected area&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;14. &lt;strong&gt;Profiles and Themes&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Using profiles&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Inheriting a profile&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Using an migrating anonymous profiles&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Managing user profiles&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Using themes&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. User personalized themes&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;15. &lt;strong&gt;Configuration&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Adding custom application settings in web.config&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Displaying custom error messages&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Maintaining session state across multiple web servers&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Accessing other web.config configuration elements&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Adding your own configuration elements to web.config&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Encrypting web.config sections&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;16. &lt;strong&gt;Tracing and Debugging&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Uncovering page level problems&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Uncovering application wide problems&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Writing trace data to the event log&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Sending trace data via email&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Using a breakpoint to stop execution of an application when a condition is met&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;17. &lt;strong&gt;Caching&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Caching a whole page&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Caching pages based on route details&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Caching pages based on browser type and version&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Caching pages based on developer defined custom strings&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Caching partial pages&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Caching application data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;7. Caching object data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;8. Installing MemCached Win32 as an alternate cache provider&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;9. Using the MemCached Enyim client to cache application data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;10. Installing Microsoft Velocity&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;11. Using Velocity to cache application data&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;18. &lt;strong&gt;Localizing your application&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Providing multiple language support&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Using resource files to manage display data&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Managing currency display based on selected language&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;19. &lt;strong&gt;HTTP Handlers and Modules&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Tracking access to your resources with an HTTP Handler&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Create a file download HTTP Handler&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Control leeching of your resources with an HTTP Module&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;20. &lt;strong&gt;Making ASP.NET even more powerful&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Making controllers testable by implementing a ControllerFactory&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Implementing inversion of control with StructureMap&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Install MVC Turbine and write less code&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Creating testable views&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Creating testable controllers&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.simple-talk.com/community/aggbug.aspx?PostID=86817" width="1" height="1"&gt;</content><author><name>asiemer</name><uri>http://www.simple-talk.com/community/user/Profile.aspx?UserID=21397</uri></author></entry></feed>
