[JQUERY] 어떻게 ASP.NET MVC 컨트롤러에 JSON, jQuery로 복잡한 객체의 배열을 게시하려면?
JQUERY어떻게 ASP.NET MVC 컨트롤러에 JSON, jQuery로 복잡한 객체의 배열을 게시하려면?
해결법
-
1.나는 해결책을 발견했습니다. 액션에 JSON을 보내기 - - 스티브 이방인, jQuery를 및 ASP.NET MVC의 솔루션을 사용하여 재 방문.
나는 해결책을 발견했습니다. 액션에 JSON을 보내기 - - 스티브 이방인, jQuery를 및 ASP.NET MVC의 솔루션을 사용하여 재 방문.
내 ASP.NET MVC보기 코드 외모와 같은 :
function getplaceholders() { var placeholders = $('.ui-sortable'); var results = new Array(); placeholders.each(function() { var ph = $(this).attr('id'); var sections = $(this).find('.sort'); var section; sections.each(function(i, item) { var sid = $(item).attr('id'); var o = { 'SectionId': sid, 'Placeholder': ph, 'Position': i }; results.push(o); }); }); var postData = { widgets: results }; var widgets = results; $.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
사용자 정의 속성에 대한 코드는 (링크가 지금 고장) 여기에서 찾을 수 있습니다.
링크가 깨진되기 때문에 이것은 JsonFilterAttribute 코드입니다
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; } } }
JsonConvert.DeserializeObject는 Json.NET에서입니다
링크 : 직렬화 및 역 직렬화 JSON와 Json.NET
-
2.액션 필터, JQuery와 캐릭터 라인 화, bleh ...
액션 필터, JQuery와 캐릭터 라인 화, bleh ...
베드로는,이 기능은 MVC 출신이다. 즉 큰 있도록 MVC를 만드는 것 중 하나입니다.
$.post('SomeController/Batch', { 'ids': ['1', '2', '3']}, function (r) { ... });
그리고 행동,
[HttpPost] public ActionResult Batch(string[] ids) { }
작품 매력 :
당신이 jQuery를 1.4 이상을 사용하는 경우, 당신은 기존의 모드를 설정 보길 원하는 :
jQuery.ajaxSettings.traditional = true;
로 여기에 설명 : http://www.dovetailsoftware.com/blogs/kmiller/archive/2010/02/24/jquery-1-4-breaks-asp-net-mvc-actions-with-array-parameters
이것은 복잡한 개체를 사용할 수 있습니다. 당신이 관심이 있다면, 당신은 모델 바인딩에 대한 MVC 문서로 보일 것입니다 : http://msdn.microsoft.com/en-us/library/dd410405.aspx
-
3.에서 .NET4.5, MVC 5 위젯 필요가 없습니다.
에서 .NET4.5, MVC 5 위젯 필요가 없습니다.
자바 스크립트 :
JS에서 개체 :
게시 않습니다 메커니즘.
$('.button-green-large').click(function() { $.ajax({ url: 'Quote', type: "POST", dataType: "json", data: JSON.stringify(document.selectedProduct), contentType: 'application/json; charset=utf-8', }); });
씨#
사물:
public class WillsQuoteViewModel { public string Product { get; set; } public List<ClaimedFee> ClaimedFees { get; set; } } public partial class ClaimedFee //Generated by EF6 { public long Id { get; set; } public long JourneyId { get; set; } public string Title { get; set; } public decimal Net { get; set; } public decimal Vat { get; set; } public string Type { get; set; } public virtual Journey Journey { get; set; } }
제어 장치:
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Quote(WillsQuoteViewModel data) { .... }
개체 접수 :
이것은 당신에게 시간을 절약 할 수 있기를 바랍니다.
-
4.하반기는 JSON 및 일반 XML 모두를 말하는 ASP.NET MVC를 사용하여 REST API를 작성 향해, 인용합니다 :
하반기는 JSON 및 일반 XML 모두를 말하는 ASP.NET MVC를 사용하여 REST API를 작성 향해, 인용합니다 :
그 후 표시된 코드를 사용하여 JSON C에 # 객체를 매핑하는 작업 필터를 구현합니다.
-
5.먼저 다운로드 도움이 될 것입니다이 자바 스크립트 코드, JSON2.js는 문자열로 객체를 직렬화.
먼저 다운로드 도움이 될 것입니다이 자바 스크립트 코드, JSON2.js는 문자열로 객체를 직렬화.
내 예제에서 나는 아약스를 통해있는 jqGrid의 행을 게시하도록하겠습니다 :
var commissions = new Array(); // Do several row data and do some push. In this example is just one push. var rowData = $(GRID_AGENTS).getRowData(ids[i]); commissions.push(rowData); $.ajax({ type: "POST", traditional: true, url: '<%= Url.Content("~/") %>' + AREA + CONTROLLER + 'SubmitCommissions', async: true, data: JSON.stringify(commissions), dataType: "json", contentType: 'application/json; charset=utf-8', success: function (data) { if (data.Result) { jQuery(GRID_AGENTS).trigger('reloadGrid'); } else { jAlert("A problem ocurred during updating", "Commissions Report"); } } });
이제 컨트롤러 :
[HttpPost] [JsonFilter(Param = "commissions", JsonDataType = typeof(List<CommissionsJs>))] public ActionResult SubmitCommissions(List<CommissionsJs> commissions) { var result = dosomething(commissions); var jsonData = new { Result = true, Message = "Success" }; if (result < 1) { jsonData = new { Result = false, Message = "Problem" }; } return Json(jsonData); }
JsonFilter 클래스 (JSC 참조 덕분에)를 만듭니다.
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 문자열을 구문 분석 할 수 있도록 다른 클래스를 만들고이 클래스 comissionsJS 내있는 jqGrid의 모든 행입니다.
public class CommissionsJs { public string Amount { get; set; } public string CheckNumber { get; set; } public string Contract { get; set; } public string DatePayed { get; set; } public string DealerName { get; set; } public string ID { get; set; } public string IdAgentPayment { get; set; } public string Notes { get; set; } public string PaymentMethodName { get; set; } public string RowNumber { get; set; } public string AgentId { get; set; } }
나는이 예제는 복잡한 객체를 게시하는 방법을 설명하기 위해 도움이되기를 바랍니다.
-
6.
[HttpPost] public bool parseAllDocs([FromBody] IList<docObject> data) { // do stuff }
-
7.세상에. 하지 아무것도 특별 할 필요가있다. 다음과 같은 경우에만 게시물 절에서 수행
세상에. 하지 아무것도 특별 할 필요가있다. 다음과 같은 경우에만 게시물 절에서 수행
$.post(yourURL,{ '': results})(function(e){ ...}
서버에서 이것을 사용 :
public ActionResult MethodName(List<yourViewModel> model){...}
당신이 일이 링크 도움이 ...
from https://stackoverflow.com/questions/320291/how-to-post-an-array-of-complex-objects-with-json-jquery-to-asp-net-mvc-control by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] JQuery와 데이터 셀렉터 (0) | 2020.10.19 |
---|---|
[JQUERY] 자바 스크립트 - URL 경로의 부분을 얻기 (0) | 2020.10.19 |
[JQUERY] 어떻게 동시에 두 개의 jQuery를 애니메이션을 실행하는? (0) | 2020.10.19 |
[JQUERY] 어떻게 jQuery를 기능 (새로운 jQuery를 방법 또는 플러그인)을 만드는 방법? (0) | 2020.10.19 |
[JQUERY] 페이지 로딩이 완료 될 때까지 어떻게 페이지로드 DIV를 보여? (0) | 2020.10.19 |