* Added EntityController.GetUrlsByIds support for int & guid + update MNTP
Fixes issue with MNTP (for 8.18) in a partial view macro - GH #11631
Renamed GetUrlsByUdis to match, don't do this in v9 as it would be
breaking there, instead mark it obsolete.
TODO: v9 ensure integration test coverage, more painful here as no
WebApplicationFactory.
* Added partial test coverage for GetUrlsByIds.
This doesn't actually work in the backoffice because of GH #11448
So lets fix that next.
* Failing test demonstrating #11448
* Fix for #11448 getByIds doesn't work as expected.
ParameterSwapControllerActionSelectorAttribute - cached body survived between requests.
* Expand on sync vs async comment for future confused souls.
* Might aswell cache parsed json vs string for performance
* Make ParameterSwapControllerActionSelector remarks more accurate.
* Share deserialized request body between action constraint and model binder
* Be more defensive with RequestBodyAsJObject HttpContext item
Only store if deserialize success.
Don't assume key being present means can cast as JObject.
* Nest constant a little deeper.
* Final defensive tweak