我想通过发布将对象列表从javascript发送到控制器方法

时间:2019-11-12 16:18:52

标签: javascript ajax asp.net-mvc model-view-controller

我想将对象列表发送到控制器方法,但是控制器中的集合为空。而且我收到500 Internal Server Error。我检查了xhr网络,我的请求有效载荷是:{,…}

  

集合:[{{类别ID:1,页面ID:1,位置X:1,位置Y:1,   DimensionX:3,DimensionY:3},…] 0:{categoryID:1,pageID:1,   位置X:1,位置Y:1,维度X:3,维度Y:3} 1:   {categoryID:1,pageID:3,positionX:1,positionY:3,dimensionX:3,   DimensionY:7} 2:{categoryID:1,pageID:5,positionX:1,positionY:   7,dimensionX:2,dimensionY:9} 3:{categoryID:1,pageID:6,   positionX:2,位置Y:7,维度X:3,维度Y:9} 4:   {categoryID:1,pageID:7,positionX:3,positionY:1,dimensionX:5,   DimensionY:3} 5:{categoryID:1,pageID:8,positionX:3,positionY:   3,dimensionX:5,dimensionY:5} 6:{categoryID:1,pageID:9,   positionX:3,positionY:5,维度X:5,维度Y:7} 7:   {categoryID:1,pageID:10,positionX:3,positionY:7,DimensionX:4,   DimensionY:9} 8:{类别ID:1,页面ID:11,位置X:4,位置Y:   7,dimensionX:5,dimensionY:9}

grid.html

<button type="button" class="button" style="margin-left:400px" onclick="saveChanges()">Save Changes</button>

grid.js

function saveChanges() {
    var collection = [];
    Array.from(document.querySelectorAll('.grid-container>.icon')).forEach((element) => {
        var single = {};
        single['categoryID'] = 1;
        single['pageID'] = parseInt(element.getAttribute("icon-id"));
        var gridArea=element.style.gridArea.split(" / ");
        single['positionX']=parseInt(gridArea[0]);
        single['positionY'] = parseInt(gridArea[1]);
        single['dimensionX'] = parseInt(gridArea[2]);
        single['dimensionY'] = parseInt(gridArea[3]);
        collection.push(single);
    });
    var xhr = new XMLHttpRequest();
    xhr.open("POST",  "PageView/Create", true);
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.send(JSON.stringify({'collection': collection }));
}

PageViewController.cs

[HttpPost]
        public ActionResult Create(List<PageCategoryPageViewModel> collection)
        {
            try
            {
                collection.ForEach((x)=>_pageCategoryPageService.CreatePageCategoryPage(x));
                return View("Grid");
            }
            catch
            {
                return View("Grid");
            }
        }

0 个答案:

没有答案