* draft of rewrite
* show how to make cusom val prov first
* correct errors
* more corrections
* fix typo
* more small fixes
* dict int,string to string,string
* feedback
* feedback
* fix links
* feedback
* feedback
* clean up sample app
* convert inline code to snippet refs
* acrolinx
* fix snippet
* changes that were accidentally not saved
* proofread fixes
* corrections
* use asp-for
* fix date
* feedback
Fixes#10264
[Review URL](https://review.docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-2.2&branch=pr-en-us-10390)
* Not too keen on "top-level node." It isn't documented anywhere, and Google Fu wasn't much help either. I've *guessed* from the API what it means (and I could be *wrong*).
* Side note: `Required` is *required* as a model property attribute to get client-side required validation to work AFAICT. Adding `Required` or `BindRequired` to the top-level node (parameter) doesn't make it work client-side. Not sure if that's an issue or not ... just a side behavior that I noticed when testing.
* `jQuery.validate()` doesn't seem to be a thing any longer. JS complains that it can't find the function with the most recent jQuery validation scripts (from the current templates). Everything seems to work without it, so I nixed it.
* The sample was *almost* updated for 2.2. This should take it across the finish line. 🏁
* In the OP, the dev said that they were missing `AddDataAnnotations`, but we don't doc that level of detail. If they go `AddMvcCore`, they're kind'a on their own to make sure that they have all of the bits in place.
Fixes#9219
@JunTaoLuo Dan calls out the implicit versioning "for 2.1 SDK or later;" however, we don't usually version the doc content by SDK release. We might need to say something for this update in the passage that I'm adding to the All topic (*aspnetcore/fundamentals/metapackage.md*) about which SDK version this applies to. I don't know if that's something that you would like to do or what version to call out.
I also remove the version from the samples. We also assume that devs are using the latest SDK with our samples.
This blog post was all I could find for official api documentation without wasting an hour reading the 400 line unobtrusive.js file in the projects. This example makes now sense without this link (perhaps the information should be reproduced here in case it's taken down).