U4-6721 Error when submitting Macros, Collection was modified; enumeration operation may not execute. (after project has been updated to MVC5)

#U4-6721 In Progress
This commit is contained in:
Sebastiaan Janssen
2015-07-21 19:34:49 +02:00
parent b78f75775d
commit 0bbe1c6cdc
5 changed files with 27 additions and 52 deletions

View File

@@ -138,17 +138,18 @@ namespace Umbraco.Web.Mvc
/// <param name="controller"></param>
internal static void EnsureViewObjectDataOnResult(this ControllerBase controller, ViewResultBase result)
{
//when merging we'll create a new dictionary, otherwise you might run into an enumeration error
// caused from ModelStateDictionary
result.ViewData.ModelState.MergeSafe(new ModelStateDictionary(controller.ViewData.ModelState));
// Temporarily copy the dictionary to avoid enumerator-modification errors
var newViewDataDict = new ViewDataDictionary(controller.ViewData);
foreach (var d in newViewDataDict)
result.ViewData[d.Key] = d.Value;
result.TempData = controller.TempData;
var newViewDataDict = new ViewDataDictionary(controller.ViewData);
var viewDataDictionary = result.ViewData;
foreach (var d in newViewDataDict)
viewDataDictionary[d.Key] = d.Value;
result.ViewData = viewDataDictionary;
foreach (var keyValuePair in controller.ViewData.ModelState.Keys)
result.ViewData[keyValuePair] = keyValuePair;
if (result.View != null) return;
if (string.IsNullOrEmpty(result.ViewName))