Q:

ASP.NET MVC 3: Required steps for unobtrusive client-side validation of dynamic/AJAX content

What are the complete set of Steps Required for client-side unobtrusive validation to work for dynamically inserted form fields? 
Relevant SO posts
ASP.NET MVC 3 unobtrusive client-side validation with dynamic content - He needed the unobtrusive validation attributes to show up in the generated HTML and did so by calling BeginForm
ASP.Net MVC 3 validation on AjaxForm - The asker was using Ajax. BeginForm which uses MicrosoftAjax instead of JQuery.validation. 
PartialView and unobtrusive client validation not working - He had the problem with unobtrusive validation attributes not showing up and overrode ViewContext. FormContext as a workaround. 
ASP.NET MVC 3: Generate unobtrusive validation when BeginForm is on the layout - Workaround for unobtrusive validation attributes not showing up in HTML
Relevant Links
Brad Wilson's Unobtrusive Client Validation in ASP.NET MVC 3
The Complete Guide To Validation In ASP.NET MVC 3 - Part  1
The Complete Guide To Validation In ASP.NET MVC 3 - Part 2
Unobtrusive Client-side Validation with Dynamic Contents in ASP.NET MVC 3

A:

At this point I believe the following is a complete set of requirements:

Create a form with Html. BeginForm
Turn on ClientValidationEnabled
Turn on UnobtrusiveJavaScriptEnabled
Set appropriate validation attributes on the model's properties (not fields)
If the Html Helpers being used to create the form elements are not on the same form as the Html. BeginForm call, use a relevant workaround (see workaround 1 and workaround 2)
Include jquery, jquery.validate.js, and jquery.validate.unobtrusive.js files, in that order
Verify that the unobtrusive validation attributes are present in the HTML
If using custom validators:

ensure that they are added to jQuery.validator.unobtrusive.adapters
ensure that they are added to the jQuery validation plugin by calling jQuery.validator.addMethod. 
ensure that the above happen before $(document).ready() as at that point it's too late

Call jQuery.validator.unobtrusive.parse or jQuery.validator.unobtrusive.parseElement on elements added dynamically after the initial page load.