ahmed_sa Ответов: 0

Переменные Orderitems хранят только последнюю запись из списка хотя у меня есть еще одна запись


Проблема
список orderItems хранит только последнюю запись и игнорирует другую проблему строк при нажатии кнопки Сохранить почему ?
значение
saleslino  quantity
1             2
2             6
3             9

он должен хранить все в списке, но на самом деле он хранит неправильно
он хранит только последнюю запись, что означает, что он хранит 3 и его количество 9 .
моя модель выглядит следующим образом

public class SalesHeader
    {
        public int SalesOrderNo { get; set; }
        public int SalesYear { get; set; }
        public int BranchCode { get; set; }
        public int SalesType { get; set; }
        public DateTime SalesDate { get; set; }
        public int CustomerID { get; set; }
        public Customer Customers { get; set; }
        public ICollection<SalesFooter> SalesFooters { get; set; }
        public decimal TotalPrice { get; set; }
    }


Что я уже пробовал:

<script>
    $(document).ready(function () {
        var orderItems = [];
        //Add button click function
        $('#add').click(function () {
            //Check validation of order item
            var isValidItem = true;
            
            //Add item to list if valid
            if (isValidItem) {
                orderItems.push({
                    SalesLineNo: $('#SalesLineNo').val().trim(),
                    ItemCode: $('#ItemCode').val().trim(),
                    Quantity: parseInt($('#Qunatity').val().trim()),
                    UnitPrice: parseFloat($('#UnitPrice').val().trim()),
                    Total: parseInt($('#Qunatity').val().trim()) * parseFloat($('#UnitPrice').val().trim())
                });
            }
            //populate order items
            GeneratedItemsTable();

        });
        function GeneratedItemsTable() {
            if (orderItems.length > 0) {
                var $table = $('<table/>');
                $table.append('<thead><tr><th>SalesLineNo</th><th>ItemCode</th><th>Qunatity</th><th>UnitPrice</th><th>Total</th><th></th></tr></thead>');
                var $tbody = $('<tbody/>');
                $.each(orderItems, function (i, val) {
                    var $row = $('<tr/>');
                    $row.append($('<td/>').html(val.SalesLineNo));
                    $row.append($('<td/>').html(val.ItemCode));
                    $row.append($('<td/>').html(val.Qunatity));
                    $row.append($('<td/>').html(val.UnitPrice));
                    $row.append($('<td/>').html(val.Total));
                    var $remove = $('<a href="#">Remove</a>');
                    $remove.click(function (e) {
                        e.preventDefault();
                        orderItems.splice(i, 1);
                        GeneratedItemsTable();
                    });
                    $row.append($('<td/>').html($remove));
                    $tbody.append($row);
                });
                console.log("current", orderItems);
                $table.append($tbody);
                $('#orderItems').html($table);
            }
            else {
                $('#orderItems').html('');
            }
        }
        $("#saveOrder").click(function (e) {
            e.preventDefault();

            //================Save Footer====
            var orderItems = new Array();

            var orderItem = {};
            orderItem.SalesLineNo = $('#SalesLineNo').val().trim();
            orderItem.ItemCode = $('#ItemCode').val().trim();
            orderItem.Quantity = parseInt($('#Qunatity').val().trim());
            orderItem.Price = parseFloat($('#UnitPrice').val().trim());
            orderItem.Total = parseInt($('#Qunatity').val().trim()) * parseFloat($('#UnitPrice').val().trim());
            orderItems.push(orderItem);
            //===========Save Header=======
            var saleheader = {};
            saleheader.SalesOrderNo = $("#SalesOrderNo").val();
            saleheader.SalesYear = $("#SalesYear").val();
            saleheader.BranchCode = $("#BranchCode").val();
            saleheader.SalesType = $("#SalesType").val();
            saleheader.SalesDate = $("#SalesDate").val();
            saleheader.TotalPrice = $("#TotalPrice").val();
            saleheader.CustomerID = $("#CustomerID").val();
            saleheader.SalesFooters = orderItems;
            //===========

            console.log('Submit data: ');
            console.log(JSON.stringify(saleheader));
            $.ajax({
                traditional: true,
                //contentType: 'application/json; charset=utf-8',
                contentType: 'application/json',
                dataType: 'json',
                type: 'POST',
                url: '/SalesOrder/Create',
                data: JSON.stringify(saleheader),
                success: function (result) {
                    console.log('Data received: ');
                    alert(result);
                    location.reload();
                },
                error: function () {
                    alert("Error!")
                }
            });
        });
    });
   
</script>

Bryian Tan

Что должен делать этот код? проходя мимо строк orderitems или saleHeader для заказа salesorder контроллер?

ahmed_sa

[HttpPost]
public IActionResult Create([FromBody]SalesHeader saleheader)
{
}
если я поставлю точку останова здесь, когда нажму кнопку Сохранить
это показывает мне нуль
почему?
он должен иметь одну запись в заголовке
и два ряда в нижнем колонтитуле
https://www.mediafire.com/view/jbc22aojyo2nbbr/nullresultdisplay.jpg/file

ahmed_sa

показать null на объекте saleheader

0 Ответов