JsonResult
을 확장 중이며 그 안에 Data
속성에 속성을 추가해야합니다.JavaScriptSerializer에서 사용할 익명 형식에 속성 추가
public override void ExecuteResult(ControllerContext context)
{
// error checking removed for brevity
this.Data = AppendSomehow(
this.Data, // = new { hello = "hi" }
new { goodbye = "bye" });
base.ExecuteResult(context); // calls javaScriptSerializer.Serialize(this.Data)
}
하나의 옵션으로 변환하는 것입니다 IDictionary<string, object>
:
private static object AppendSomehow(object data, object additional)
{
var originalDictionary = new RouteValueDictionary(original);
var additionalDictionary = new RouteValueDictionary(additional);
foreach (var kv in additionalDictionary)
originalDictionary.Add(kv.Key, kv.Value);
return originalDictionary;
}
하지만 JavaScriptSerializer
통과 때와 같이이 나올 것입니다 : 원하는 결과가
[{"Key":"hello","Value":"hi"},{"Key":"goodbye","Value":"bye"}]
때 :
{"hello":"hi","goodbye":"bye"}
How to flatten an ExpandoObject returned via JsonResult in asp.net mvc?에 게시 된 솔루션을 사용하도록 base.ExecuteResult(ControllerContext)
구현을 복사하여 붙여 넣을 수는 있지만 구현이 이미 존재할 때 약간 더러워 보입니다.