jQuery 및 ASP.NET MVC: JSON을 사용하여 복잡한 개체 배열 게시
문제:
jQuery에서 ASP.NET MVC 컨트롤러로 복잡한 개체 배열을 전달하는 방법은 무엇입니까? AJAX 요청? 컨트롤러 작업은 어떤 매개변수를 허용해야 합니까?
해결책:
jQuery 및 JSON을 사용하여 복잡한 객체 배열을 컨트롤러에 게시하려면 다음 단계를 따르세요.
배열을 직렬화하여 JSON:
JSON.stringify()를 사용하여 객체 배열을 JSON 문자열로 변환합니다.
요청 헤더를 설정합니다.
application/json에 Content-Type 헤더를 지정합니다. charset=utf-8.
$.ajax() 메서드 사용:
$.ajax()를 사용하여 AJAX 요청 생성 메서드를 사용하고 JSON 데이터를 데이터로 제공합니다. 매개변수.
컨트롤러 작업:
컨트롤러 작업을 사용자 정의 속성(JsonFilter)으로 장식하여 JSON 데이터를 역직렬화합니다. 속성은 매개변수 이름과 JSON 데이터 유형을 지정해야 합니다.
사용자 정의 속성 (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; } } }
예:
JavaScript:
function getplaceholders() { var widgets = []; // ... populate the array $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', type: 'POST', dataType: 'json', data: JSON.stringify(widgets), contentType: 'application/json; charset=utf-8' }); }
제어 장치 액션:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... }
위 내용은 JSON을 사용하여 jQuery에서 ASP.NET MVC 컨트롤러로 복잡한 개체 배열을 게시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!