Since there is a 1 to n association between such objects and middlewares (that are actually just the delegates that run in the pipeline) the terminology was confusing.
This change makes implementing element editors more intuitive, since they no longer rely on the initial postback from layout editor to the element editor dialog.
The ObjectStore is a simple database table that serves as a robust data transfer mechanism to share element state without the need for the host (content) to be persisted.
We could have used SessionState, but that would have added configuration requirements when hosting in a web farm.
This issue fixes an issue where multiple drivers for the same element type would throw an exception due to the element type being present more than once in the element type repository.
The issue occurs when rendering an Html.CheckBox whose state contains a "true,false" string for example.
That string cannot be parsed into a boolean, so an error occurs.
This fix simply ignores any additional values for a given key (which presumably is what the default behavior is anyway, since the issue does not occur with the default value providers).
This fixes the issue where blueprint elements were still available even after deleting them.
The fix is to evict the cached element descriptors when a blueprint element is deleted.
- Added synchronization of multiple concurrent content regeneration on cache miss.
- Added support for grace time, configurable per route.
- Refactored and cleaned up code and comments througout the module.
- Made many members "protected virtual" on OutputCacheFilter for easier substitution.
- Made various usability improvements in admin UI.
- Added support for "vary by authentication state".
CultureCommand change actually fixes a benign bug in one of the commands (extra space at the end).
DisplayHelper is clarified by better typing of intermediate results.
Before this change, the StopRoutingHandler wouldn't work, since the wrapping HttpHandler would invoke the GetHttpHandler on the nested route handler, which in the case of StopRoutingHandler would throw a NotSupportedException.
Maybe a better, more generic way would be to somehow identify which routing handlers should be wrapped and which shouldn't be, maybe based on the result of the GetVirtualPath method on the RouteData object (e.g. if it returns "null", don't wrap).
This fixes an issue causing a YSOD on the AuditTrail screen by recording all relevant data for the AuditTrailSettings event provider, such that the event providers themselves can be disabled without breaking the recorded events (which relied on the Event Descriptor to be available when rendering the event, which is unavailable if its providing feature is disabled).
Work Item: 21091
The issue was that if you first "new up" a content item, update its content fields, and then invoke "create", its version record will be created, effectively wiping out the content fields' state.
Since we already know we want to create the content item, we can new up the content item and go ahead and create its version record, deferring event handlers from being triggered when we would start out with "Create".