【问题标题】:Post value from javascript to Controller将值从 javascript 发布到控制器
【发布时间】:2014-04-28 15:50:22
【问题描述】:

在我们的 MVC 项目中,我们使用了以下 javascript 函数,我们确保这是一个没有任何错误的工作函数。

function GetSelectedItems() {
        var newItemIDs = [];
        $("#SelectItems  tbody").find('tr').each(
        function () {

            var id = $(this).find('#hfID').val();
            var IsAdd = $(this).hasClass('k-state-selected');

            if (IsAdd == true) {
                newItemIDs.push(id);
            }

        });
        jQuery.ajaxSettings.traditional = true
        $.post("/Form8Invoice/AddItemToCart", { NewItemIDs: newItemIDs });

但是,当将数组值发布到 Controller 时,这些值似乎没有正确传递。控制器动作方法如下,供快速参考。

[HttpPost]
        public ActionResult AddItemToCart(string[] newItemIDs, [DataSourceRequest] DataSourceRequest request)
        {
            if (newItemIDs != null)
            {
                float grandTotal = 0;
                string currentLocation = GetCurrentLocation();
                foreach (string itemID in newItemIDs)
                {
                    Location location = new Location();
                    Stock stock = new Stock();
                    float UnitPrice = 0;
                    float SellingPrice = 0;

                    if(string.IsNullOrEmpty(currentLocation))
                    {
                        List<Stock> stokList = _stockRepositoty.GetStocksByItemId(new Guid(itemID)).ToList();
                        stock = stokList[0];
                    }
                    else if (currentLocation != "admin")
                    {
                        location = _locationRepository.GetLocationByName(currentLocation);
                        stock = _stockRepositoty.GetStockByItemIdAndLocation(new Guid(itemID), location.LocationId);
                    }
                    else
                    {
                        List<Stock> stokList = _stockRepositoty.GetStocksByItemId(new Guid(itemID)).ToList();
                        stock = stokList[0];
                    }

                    if (stock != null)
                    {
                        if (!string.IsNullOrEmpty(stock.UnitPrice.ToString()))
                        {
                            UnitPrice = float.Parse(stock.UnitPrice.ToString());
                            SellingPrice = UnitPrice; // + tax - discount
                        }
                    }

                    if (_cartItemsRepository.IsItemAlreadyAdded(GetCurrentLocation(), GetCurrentUser(), new Guid(itemID)))
                    {
                        CartItem cartItem = _cartItemsRepository.GetItem(GetCurrentLocation(), GetCurrentUser(), new Guid(itemID));
                        int Quantity = cartItem.Quantity;
                        cartItem.Quantity = cartItem.Quantity + 1;
                        _cartItemsRepository.UpdateItems(cartItem);

                        float NetAmount = SellingPrice * cartItem.Quantity;
                        grandTotal = grandTotal + NetAmount;
                    }
                    else
                    {
                        CartItem cartItem = new CartItem();
                        cartItem.LocationName = GetCurrentLocation();
                        cartItem.UserName = GetCurrentUser();
                        cartItem.ItemId = new Guid(itemID);
                        cartItem.Quantity = 1;
                        _cartItemsRepository.InsertItems(cartItem);

                        float NetAmount = SellingPrice * cartItem.Quantity;
                        grandTotal = grandTotal + NetAmount;
                    }


                }

                ViewBag.GrandTotal = grandTotal.ToString();
                _cartItemsRepository.Save();
            }
            return View();
        }

我们将不胜感激。

【问题讨论】:

  • 只有在 IIS 中托管网站后,我才会遇到此问题。在开发环境中一切正常。
  • 更改控制器参数以匹配 Json 参数。必须是string[] NewItemIDs
  • 你试过 $.post("/Form8Invoice/AddItemToCart", JSON.stringify(newItemIDs));

标签: c# javascript jquery model-view-controller kendo-ui


【解决方案1】:

看来您的参数属性的大小写错误。试试这个:

$.post("/Form8Invoice/AddItemToCart", { newItemIDs: newItemIDs });

【讨论】:

  • 在 Asp.Net MVC 中匹配不区分大小写并且不依赖于参数顺序。
  • 只有在 IIS 中托管网站后,我才会遇到此问题。在开发环境中一切正常。
猜你喜欢
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
相关资源
最近更新 更多