private static IDictionary <string, object> WrapArrayWithObject(dynamic model, TempDataDictionary tempData, ViewDataDictionary viewDataDictionary)
        {
            var output = new Dictionary <string, object>();

            // We want to avoid sending a JSON array as a response.
            // See http://haacked.com/archive/2009/06/25/json-hijacking.aspx
            // In cases where our model would be converted to an array,
            // we wrap it in an object.
            object wrappedModel = (typeof(IEnumerable)).IsInstanceOfType(model) ? new { model } : model;

            output["Model"] = wrappedModel;

            if (tempData.ContainsKey("alert"))
            {
                output["FlashAlert"] = tempData["alert"].ToString();
            }

            if (tempData.ContainsKey("confirm"))
            {
                output["FlashConfirm"] = tempData["confirm"].ToString();
            }

            if (viewDataDictionary.Any())
            {
                output["__view__"] = viewDataDictionary
                                     .ToDictionary(viewDataKeyValuePair => viewDataKeyValuePair.Key,
                                                   viewDataKeyValuePair => viewDataKeyValuePair.Value);
            }

            if (viewDataDictionary.ModelState.Any())
            {
                var errors = viewDataDictionary.ModelState
                             .Where(p => p.Value.Errors.Any());

                if (errors.Any())
                {
                    output["Errors"] = errors
                                       .ToDictionary(p => p.Key, p => p.Value.Errors.Select(x => x.ErrorMessage).ToArray());
                }
            }

            return(output);
        }
        private static IDictionary<string,object> WrapArrayWithObject(dynamic model, TempDataDictionary tempData, ViewDataDictionary viewDataDictionary)
        {
            var output = new Dictionary<string, object>();

            // We want to avoid sending a JSON array as a response.
            // See http://haacked.com/archive/2009/06/25/json-hijacking.aspx
            // In cases where our model would be converted to an array,
            // we wrap it in an object.
            object wrappedModel = (typeof(IEnumerable)).IsInstanceOfType(model) ? new { model } : model;

            output["Model"] = wrappedModel;

            if (tempData.ContainsKey("alert"))
            {
                output["FlashAlert"] = tempData["alert"].ToString();
            }

            if (tempData.ContainsKey("confirm"))
            {
                output["FlashConfirm"] = tempData["confirm"].ToString();
            }
            
            if (viewDataDictionary.Any())
            {
                output["__view__"] = viewDataDictionary
                    .ToDictionary(viewDataKeyValuePair => viewDataKeyValuePair.Key,
                                  viewDataKeyValuePair => viewDataKeyValuePair.Value);
            }

            if (viewDataDictionary.ModelState.Any())
            {
                var errors = viewDataDictionary.ModelState
                    .Where(p => p.Value.Errors.Any());

                if(errors.Any())
                output["Errors"] = errors
                    .ToDictionary(p => p.Key, p => p.Value.Errors.Select(x => x.ErrorMessage).ToArray());
            }

            return output;
        }