ASP.NET MVC 컨트롤러에서 JSON 및 jQuery를 사용하여 복잡한 개체 역직렬화
ASP.NET MVC에서 JSON의 복잡한 개체를 역직렬화하면 도전이 되십시오. 이 질문은 사용자가 jQuery에서 컨트롤러 작업으로 복잡한 개체 배열을 전달하려고 시도하는 문제를 해결합니다.
이 문제를 해결하기 위해 솔루션은 다음을 활용합니다. [JsonFilter](https://web.archive.org/web/20120313075719/http://www.asp.net/web-api/overview/advanced/sending-and-reception-json-in-aspnet-web- api) 사용자 정의 속성. 이 속성은 JSON 요청을 적절한 유형으로 역직렬화하고 이를 작업 매개변수에 바인딩합니다.
업데이트된 보기 코드
// Serialize the results into a JSON object var postData = { widgets: results }; // Send the JSON data to the controller $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', type: 'POST', dataType: 'json', data: $.toJSON(widgets), contentType: 'application/json; charset=utf-8', success: function(result) { alert(result.Result); } });
수정된 컨트롤러 코드
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... code to handle the updated widgets ... }
사용자 정의 JsonFilter 속성
public class JsonFilter : ActionFilterAttribute { public string Param { get; set; } public Type JsonDataType { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) { string inputContent; using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)) { inputContent = sr.ReadToEnd(); } var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } } }
이 솔루션은 JSON 배열을 컨트롤러 내에서 강력한 형식의 목록으로 효과적으로 역직렬화하므로 개발자가 복잡한 개체를 쉽게 조작할 수 있습니다.
위 내용은 ASP.NET MVC 컨트롤러에서 복잡한 JSON 개체를 강력한 형식의 목록으로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!