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; }