在 MVC 內使用Ajax 將List自訂物件 傳到Controller

  • 2663
  • 0
  • 2017-09-18

在MVC的架構底下,將自訂的List<Object> 透過AJAX 傳到Controller

首先定義ViewModel

//自訂的物件
public class PRS0011OrderModel
{
  public int SEQ { get; set; }
  public String APID { get; set; }
}

//List<Object>
public class PRS0011ViewModel
{
  public List<PRS0011OrderModel> Orders { get; set; }
}

JS:

function SavePRS0011() {
    var _array = [];
    //將自訂的物件塞入Array中
    $.each($("#tbAPSORT").find('tr'), function (index, ele) {
        if ($(ele).data('apid') != undefined) {
            _array.push({ SEQ: index, APID: $(ele).data('apid') });
        }
    });

    if (_array.length > 0) {
        
        //剛剛定義的ViewModel裡面物件名稱是Orders
        var _Object = { Orders: _array };

        $.ajax({
            type: "POST",
            url: 'URL',
            data: JSON.stringify(_Object),
            async: false,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (_result) {
                
            },
            error: function (error) {
                alert('error; ' + error);
            }
        });
    }
}

最後Controller在接參數的時候直接用訂好的ViewModel就好,很方便

[HttpPost]
public ActionResult Action(PRS0011ViewModel model)
{
	ResultObject _resultObject = new ResultObject();
	return Json(_resultObject);
}

這樣就可以把自訂的List<Object>傳到後端,

PS,POST到後端的資料長度是有限制的,如果要擴充可在Web.Config

<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />

 

以上