{"id":2973,"date":"2010-01-15T17:15:36","date_gmt":"2010-01-15T17:15:36","guid":{"rendered":"https:\/\/test.simple-talk.com\/uncategorized\/can-you-help-me-formulate-a-toc-for-an-asp-net-mvc-cookbook\/"},"modified":"2016-07-28T10:49:51","modified_gmt":"2016-07-28T10:49:51","slug":"can-you-help-me-formulate-a-toc-for-an-asp-net-mvc-cookbook","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/can-you-help-me-formulate-a-toc-for-an-asp-net-mvc-cookbook\/","title":{"rendered":"Can you help me formulate a TOC for an ASP.NET MVC Cookbook"},"content":{"rendered":"<p>Hey there everyone.&#160; I was recently tasked to pitch a book to my publisher.&#160; As a first step I need to come up with an outline for the Table of Contents.&#160; This book is the standard cookbook style with an added focus on the MVC side of ASP.NET.&#160; I have been poking about at other similarly styled books to get some ideas.&#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.&#160; <\/p>\n<p>(Thanks to my friend James Shaw for this idea.made my life easier)<\/p>\n<p>Below is what I have some up with so far.&#160; Can you please take a quick look to make sure I haven&#8217;t missed anything?&#160; Perhaps more important than missing a topic.am I including too much?&#160; Feel free to contact me directly with any comments at <a href=\"mailto:asiemer@hotmail.com\">asiemer@hotmail.com<\/a> or leave a comment below. <\/p>\n<p>Thanks!<\/p>\n<p>1. <strong>Working with the View<\/strong><\/p>\n<p>1. Discovering the problems of a non-strongly typed view<\/p>\n<p>2. Creating a strongly typed view<\/p>\n<p>3. Working with a ViewModel<\/p>\n<p>4. How to use strongly typed input builders<\/p>\n<p>5. Create a custom input builder<\/p>\n<p>6. Consolidating view code into a partial view<\/p>\n<p>7. Using the Spark view engine<\/p>\n<p>8. Using the FubuMVC view engine<\/p>\n<p>9. Exposing a view that returns an image<\/p>\n<p>10. Creating a JSON result<\/p>\n<p>11. Consuming a JSON view<\/p>\n<p>12. Exposing a view that returns a PDF<\/p>\n<p>2. <strong>Actions<\/strong><\/p>\n<p>3. <strong>Controllers<\/strong><\/p>\n<p>4. <strong>Routes<\/strong><\/p>\n<p>5. <strong>Master Pages<\/strong><\/p>\n<p>1. How to create a master page<\/p>\n<p>2. Controlling which master page is used with a custom base page<\/p>\n<p>3. Working with Spark View Engine master pages<\/p>\n<p>6. <strong>Working with data in the view<\/strong><\/p>\n<p>1. Reintroducing for and foreach<\/p>\n<p>2. Displaying data from an xml file<\/p>\n<p>3. Displaying an array as a group of check boxes<\/p>\n<p>4. Displaying an array as a group of radio buttons<\/p>\n<p>5. Creating a page-able set of data<\/p>\n<p>6. How to sort data <\/p>\n<p>7. Navigating to a specific page of data<\/p>\n<p>8. Deleting a record from a data set<\/p>\n<p>9. Adding a javascript delete confirmation pop-up <\/p>\n<p>10. Adding a modal window delete confirmation pop-up<\/p>\n<p>11. Displaying a modal window to show a records details<\/p>\n<p>12. Adding a totals row to the bottom of a set of data<\/p>\n<p>13. Using the free telerik grid<\/p>\n<p>7. <strong>Working with Forms<\/strong><\/p>\n<p>1. Posting a form to the appropriate action<\/p>\n<p>2. Setting the field tab order<\/p>\n<p>3. Setting a default button<\/p>\n<p>8. <strong>MVC and templating<\/strong><\/p>\n<p>1. Plugging in a new skin from the template gallery<\/p>\n<p>2. Using T4 to create strongly typed helpers<\/p>\n<p>3. Using T4MVC to destroy magic strings<\/p>\n<p>4. Creating a view template<\/p>\n<p>9. <strong>Validation Recipes<\/strong><\/p>\n<p>1. Validating with Data Annotation Validators<\/p>\n<p>2. Reporting validation errors with ViewData.ModelState<\/p>\n<p>3. Using Html.ValidationMessage to display validation errors<\/p>\n<p>4. Summarizing validation errors with Html.ValidationSummary<\/p>\n<p>5. Using the xVal validation framework<\/p>\n<p>6. Using Castle Validator for validation<\/p>\n<p>7. Client side validation with JQuery Validation<\/p>\n<p>8. Making a required field<\/p>\n<p>9. Setting an acceptable range<\/p>\n<p>10. Requiring the password and password verification fields to match<\/p>\n<p>11. Using a regex pattern to validate data<\/p>\n<p>12. Forcing a choice to be made in a drop down menu<\/p>\n<p>10. <strong>Managing large applications with Areas<\/strong><\/p>\n<p>1. Creating a separate project as an area<\/p>\n<p>2. Creating an area in the same project<\/p>\n<p>3. Using areas to manage segments of your site<\/p>\n<p>4. Creating portable areas to compartmentalize functionality<\/p>\n<p>11.<strong> Maintaining state<\/strong><\/p>\n<p>1. Working with application wide information<\/p>\n<p>2. Maintaining a user&#8217;s information during their session<\/p>\n<p>3. Using cookies to remember a user<\/p>\n<p>4. Managing state in a web farm scenario using SQL Server<\/p>\n<p>12. <strong>Error Handling<\/strong><\/p>\n<p>1. Handling errors in your code<\/p>\n<p>2. Handling errors for a view<\/p>\n<p>3. Handling errors in your application<\/p>\n<p>4. Showing friendly error information<\/p>\n<p>5. Using Error Logging Modules and Handlers (ELMAH) to deal with unhandled exceptions<\/p>\n<p>6. Reporting caught exceptions to ELMAH<\/p>\n<p>13.<strong> Security<\/strong><\/p>\n<p>1. Using membership and roles to manage users<\/p>\n<p>2. Using windows authentication<\/p>\n<p>3. Restricting access to all pages<\/p>\n<p>4. Restricting access to selected pages<\/p>\n<p>5. Restricting access to pages by role<\/p>\n<p>6. Restricting access to a controller<\/p>\n<p>7. Restricting access to a selected area<\/p>\n<p>14. <strong>Profiles and Themes<\/strong><\/p>\n<p>1. Using profiles<\/p>\n<p>2. Inheriting a profile<\/p>\n<p>3. Using an migrating anonymous profiles<\/p>\n<p>4. Managing user profiles<\/p>\n<p>5. Using themes<\/p>\n<p>6. User personalized themes<\/p>\n<p>15. <strong>Configuration<\/strong><\/p>\n<p>1. Adding custom application settings in web.config<\/p>\n<p>2. Displaying custom error messages<\/p>\n<p>3. Maintaining session state across multiple web servers<\/p>\n<p>4. Accessing other web.config configuration elements<\/p>\n<p>5. Adding your own configuration elements to web.config<\/p>\n<p>6. Encrypting web.config sections<\/p>\n<p>16. <strong>Tracing and Debugging<\/strong><\/p>\n<p>1. Uncovering page level problems<\/p>\n<p>2. Uncovering application wide problems<\/p>\n<p>3. Writing trace data to the event log<\/p>\n<p>4. Sending trace data via email<\/p>\n<p>5. Using a breakpoint to stop execution of an application when a condition is met<\/p>\n<p>17. <strong>Caching<\/strong><\/p>\n<p>1. Caching a whole page<\/p>\n<p>2. Caching pages based on route details<\/p>\n<p>3. Caching pages based on browser type and version<\/p>\n<p>4. Caching pages based on developer defined custom strings<\/p>\n<p>5. Caching partial pages<\/p>\n<p>6. Caching application data<\/p>\n<p>7. Caching object data<\/p>\n<p>8. Installing MemCached Win32 as an alternate cache provider<\/p>\n<p>9. Using the MemCached Enyim client to cache application data<\/p>\n<p>10. Installing Microsoft Velocity<\/p>\n<p>11. Using Velocity to cache application data<\/p>\n<p>18. <strong>Localizing your application<\/strong><\/p>\n<p>1. Providing multiple language support<\/p>\n<p>2. Using resource files to manage display data<\/p>\n<p>3. Managing currency display based on selected language<\/p>\n<p>19. <strong>HTTP Handlers and Modules<\/strong><\/p>\n<p>1. Tracking access to your resources with an HTTP Handler<\/p>\n<p>2. Create a file download HTTP Handler<\/p>\n<p>3. Control leeching of your resources with an HTTP Module<\/p>\n<p>20. <strong>Making ASP.NET even more powerful<\/strong><\/p>\n<p>1. Making controllers testable by implementing a ControllerFactory<\/p>\n<p>2. Implementing inversion of control with StructureMap<\/p>\n<p>3. Install MVC Turbine and write less code<\/p>\n<p>4. Creating testable views<\/p>\n<p>5. Creating testable controllers<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey there everyone.&#160; I was recently tasked to pitch a book to my publisher.&#160; As a first step I need to come up with an outline for the Table of Contents.&#160; This book is the standard cookbook style with an added focus on the MVC side of ASP.NET.&#160; I have been poking about at other&#8230;&hellip;<\/p>\n","protected":false},"author":13980,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"coauthors":[],"class_list":["post-2973","post","type-post","status-publish","format-standard","hentry","category-blogs"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/2973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/13980"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=2973"}],"version-history":[{"count":2,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/2973\/revisions"}],"predecessor-version":[{"id":41843,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/2973\/revisions\/41843"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=2973"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=2973"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=2973"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=2973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}