передать список объектов через ajax на контроллер MVC всегда отправляет ноль - PullRequest
0 голосов
/ 16 октября 2018

Я, наверное, упускаю что-то очень простое.Я работаю над этим уже полтора дня и не могу заставить его работать.Я перебираю таблицу и создаю список объектов для отправки обратно на мой контроллер.По какой-то причине я всегда получаю нулевое значение в моем контроллере.Вот скрипт java.

 var items = [];
        $('#grid tr').each(function () {
            var item = {};
            item.numReceived = $(this).find("input[id*='NumReceived']").val();
            /*skip the header row*/
            if (item.numReceived !== null) {
                item.transactionID = $(this).find("input[id*='item_TransactionID']").val();
                items.push(item);
            }
        });

        $.ajax({
            url: './ReceivePOLines',
            type: "Post",
            cache: false,
            data: JSON.stringify(items),
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            success: function () {
                window.location.replace("../Home/Index");
            },
            error: function (request) {
                alert("error");
            }
        });

вот подпись метода в контроллере

 [HttpPost]
  public void ReceivePOLines(List<RecievedTransactions> inTransactions)

А вот класс ReceivedTransactions

  public class RecievedTransactions{
      public int numReceived { get; set; }
      public int transactionID { get; set; }
   }

Вотрезультаты Fiddler, показывающие, что было передано

[{}, {"numReceived": "10000", "actionID ":" 10661768 "}, {" numReceived ":" 10000 "," транзакция ID ":" 10661769"}, {" numReceived ":" 2000" , "TransactionID": "10661770"}, { "numReceived": "2500", "TransactionID": "10661771"}, { "numReceived": "2500", "TransactionID":" 10661772 "}, {" numReceived ":" 2000 ", "actionID": "10661773"}, {"numReceived": "10000", "транзакции ID": "10661774"}]

любойи вся помощь приветствуется.ура Боб

1 Ответ

0 голосов
/ 16 октября 2018

Это новый ответ.Первоначально я становился нулевым, как и ты.Но теперь он работает так, как вы хотите (массив сложных объектов).Пожалуйста, заставьте это работать на вас.Если вы не можете заставить его работать, хотя это должно произойти, я могу создать ASP.NET Fiddle.

public class RecievedTransactions
{
    public int numReceived { get; set; }
    public int transactionID { get; set; }
}

public class HomeController : Controller
{
    [HttpPost]
    public void ReceivePOLines(List<RecievedTransactions> inTransactions)  // MyArray MyArray
    {
        return;
    }

    //you use your own action name
    public ActionResult Tut133()
    {
        return View();
    }

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Tut132</title>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var items = [];
            $('#grid tr').each(function () {
                var item = {};
                item.numReceived = $(this).find("input[id*='NumReceived']").val();
                /*skip the header row*/
                if (item.numReceived !== null) {
                    item.transactionID = $(this).find("input[id*='item_TransactionID']").val();
                    items.push(item);
                }
            });

            $.ajax({
                //!!changing your url
                //url: './ReceivePOLines',
                url: "/Home/ReceivePOLines",
                type: "Post",
                cache: false,
                //data: JSON.stringify({ MyArray: items }),
                data: JSON.stringify(items),
                //expecting back from server-need to remove since we are not getting back data from server
                //dataType: "json",
                contentType: 'application/json; charset=utf-8',
                success: function () {
                    //alerting success instead of opening window
                    alert("success");
                    //window.location.replace("../Home/Index");
                },
                error: function (request) {
                    alert("error");
                }
            });
        })
    </script>
</head>
<body>
    <table id="grid">
        <tr>
            <td><input type="text" id="NumReceived1" value="10000" /></td>
            <td><input type="text" id="item_TransactionID1" value="10661768" /></td>
        </tr>
        <tr>
            <td><input type="text" id="NumReceived2" value="10000" /></td>
            <td><input type="text" id="item_TransactionID2" value="10661769" /></td>
        </tr>
    </table>
    <input type="button" id="theButton" value="Go" />
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...