将视图包分配给JQuery函数中的变量

问题描述 投票:1回答:1

我正在使用MVC,正在尝试检查该物品是否有足够的库存。我通过

在我的控制器中执行此操作
        [HttpPost]
        [ValidateAntiForgeryToken]
        [Audit]
        public void AddUnits(int so_id, int site_id, int[] addItem_id, int[] addItem_qty)
        {
            // Loop however many times is necessary to iterate through the largest array
            for (int i = 0; i < Math.Max(Math.Max(addItem_id.Length, addComp_id.Length), addPart_id.Length); i++)
            {
                foreach (SODetails sod in db.SalesOrders.Find(so_id).SalesDetails)
                {
                    if (i < addItem_id.Length && addItem_qty[i] != 0 && sod.ItemID == addItem_id[i] && addItem_id[i] != 365 && addItem_id[i] != 410) 
                    {

                        sod.item_qty += addItem_qty[i];
                        sod.item_discount = addItem_disc[i];
                        addItem_id[i] = 0;
                        addItem_qty[i] = 0;
                        addItem_disc[i] = 0;
                    }

                }
                db.SaveChanges();

                if(i < addItem_qty.Length && addItem_qty[i] != 0)
                {
                    SODetails sODetails = new SODetails
                    {
                        SalesOrderID = so_id,
                        SiteID = site_id
                    };

                    // Only add a unit to the SODetails object if it's not null and has an id and quanitity specified
                    if(i < addItem_id.Length && addItem_id[i] != 0 && addItem_qty[i] != 0)
                    {
                        sODetails.ItemID = addItem_id[i];
                        sODetails.item_qty = addItem_qty[i];
                        sODetails.item_discount = addItem_disc[i];
                    }


                    SalesOrder SO = db.SalesOrders.Find(sODetails.SalesOrderID);
                    SODetails salesOrderDetails = db.SODetails.Add(sODetails);
                    salesOrderDetails.SalesOrder = SO;

                    Item SO_Item = db.Items.Find(sODetails.ItemID);

                    if (SO_Item != null)
                    {
                        ViewBag.itemOnHand = SO_Item.On_Hand;

                        sODetails.item_qty = sODetails.item_qty == null ? 0 : sODetails.item_qty;
                        int qtyOrdered = sODetails.item_qty == null ? 0 : (int)sODetails.item_qty;
                        salesOrderDetails.dynamicItem_qty = qtyOrdered;

                        if (SO_Item.SalesOrderMessage != null)
                            TempData["SalesOrderMessage"] = SO_Item.SalesOrderMessage;
                    }

                    }
                }
            }

            db.SaveChanges();
        }

当前,我正在尝试通过执行以下操作将该商品的库存计数传递到视图包中ViewBag.itemOnHand = SO_Item.On_Hand;

然后我的视图Jquery函数看起来像这样

 // Get all item ids and quantities and store them in arrays
        var itemssel = document.getElementsByClassName("Item-select");
        var itemsqtysel = document.getElementsByClassName("Item-qty");
        var itemsdiscsel = document.getElementsByClassName("Item-disc");
        var itemOnHand = @ViewBag.itemOnHand;
        for (i = 0; i < itemssel.length; i++) {
            items[i] = itemssel[i].options[itemssel[i].selectedIndex].value;
            itemsqty[i] = itemsqtysel[i].value;
            itemsdisc[i] = itemsdiscsel[i].value;
            if (itemsqty[i] < 0) {
                alert("Quantities can't be negative!");
                return;
            }      
            if (itemsqty[i] < itemOnHand) {
                alert("Not enough inventory in site!");
                return;
            }

但是它目前无法正常工作。为什么会这样?

javascript c# jquery asp.net-mvc viewbag
1个回答
0
投票

尝试添加空合并,如果ViewBag.itemOnHand为空,则将返回0;

var itemOnHand = @(ViewBag.itemOnHand ?? 0);

然后,如果您打算将其用于一些数字运算,请尝试将其变为整数;

var itemOnHand = Number(@(ViewBag.itemOnHand ?? 0));
© www.soinside.com 2019 - 2024. All rights reserved.