나는 이미 존재하는 JsonResult (다른 메서드에서 반환 됨)에 몇 가지 추가 정보를 추가하여 Controller에서 JsonResult를 생성합니다. 더 속성을 추가하기 위해, 나는 사전에 초기 JsonResult 변환 : Dictionary <string, Object>를 JsonResult로 반환하고 JavaScript에서 적절한 결과를 얻으려면 어떻게해야합니까?
IDictionary<string, object> wrapper = (IDictionary<string, object>)new
System.Web.Routing.RouteValueDictionary(json.Data);
그럼 난 그냥
wrapper["..."] = "value"
를 작성하여 데이터를 추가합니다.
new JsonResult() { wrapper, JsonRequestBehavior.AllowGet };
을하고 문제가 시작 곳이다;
방법은 .DATA로 래퍼로, 새로운 JsonResult을 반환 통신이 완벽하게 발생하고 success 함수가 호출되면 JavaScript에서 사용하는 결과 배열에 예상대로 정리 구조가 없습니다. val = ret.PropName1;
으로 값에 액세스하는 대신 간단한 인덱스 배열에 액세스해야합니다. 두 쌍의 사전을 켭니다 : { "Value"="val, "Key"="PropName1" };
(그래서 뭔가가 o[0].Key
같이 나에게 속성 이름을 줄 것입니다)
내가 좋은 방법 보기에서 사전 정리. 몇 가지 아이디어가 있지만 특히 깨끗한 것은 아닙니다. JsonResult 재사용을 서버 측에서 버리고 모든 올바른 속성을 가진 익명 개체를 만들 수 있습니다. 또는 결과를 새 Array()로 변환 할 수있는 Javascript에서 번역 함수를 만들 수 있습니다. 나는 더 나은 해결책을 찾고있다.
[나중에 편집] 배열은 사전이 <string, object>
으로 정의 되었기 때문에 발생합니다. 그것이 <string, string>
이라면 원래 예상했던대로 전송됩니다. 하지만 실제로 그 가방에있는 객체를 사용하기 때문에 나는 그것을 그대로두고, 아래의 함수를 통해 json 응답을 전달할 것이다.
해결 방법이 있습니다. 더 나은 해결책은 제시되지 않았다. – Liz