ajax не перенаправляет после вызова контроллера mvc 5 - PullRequest
0 голосов
/ 13 мая 2018

У меня есть эта проблема, когда отправляется ajax и данные передаются в контроллер, перенаправление не происходит (также нет ошибки!), На самом деле я знаю, что ajax не является хорошим выбором для этих типовработы (перенаправление и отправка всей страницы назад), но на самом деле, так как я использую localstorage json и хочу отправить обратно эти данные json, я выбрал этот метод, любая помощь и подсказка приветствуются.

вотпредставление:

<div class="row">    
    <div class="col-xs-3">
        <div id="smartcart" hidden></div>
        <div class="col-md-6">
            <select name="brandList" id="brandList" class="form-control">
                @if (Model != null)
                {
                    foreach (var subbrand in Model.Subbrands.Distinct())
                    {
                        foreach (var brand in Model.selectedBrands)
                        {
                            if (subbrand.Title != brand)
                            {
                                <option>@subbrand.Title</option>
                            }
                        }
                    }
                }
            </select>

        </div>
        <div class="col-xs-1">
            <button type="submit" command="submit" class="btn btn-success" id="btna" value="compare">
                compare with this brand
            </button>
            <script>
                $("#btna").click(function (evt) {
                    var temp = localStorage.getItem("cart");
                    var value = $('#brandList option:selected').val();
                    var cart_list = $.ajax({
                        type: 'POST',
                        dataType: "json",
                        data: { cart_list: temp, brandList: value },
                        url: '@Url.Action("CompareItemsList", "Compare")'
                    });
                });
            </script>
        </div>
    </div>

и вот контроллер:

    [HttpPost]
            [OutputCache(Duration = 20, VaryByParam = "none")]
            public async Task<ActionResult> CompareItemsList(string cart_list, string brandList)
            {

                var data = JsonConvert.DeserializeObject<List<CartTemplate>>(cart_list);
                var equivalantCart = new List<CartTemplate> { };

                foreach (var item in data)
                {
                    int temp = Convert.ToInt32(item.product_commonCode);
                    List<Item> found = db.Items.Where(common => common.CommonCode == temp)
                    .Where(b => b.Brand == brandList)
                    .Where(code=>code.Code != item.product_id)
                    .ToList();
                    if (found.Count() == 0)
                    {
                        var emptyCartItem = new CartTemplate
                        {
                            product_commonCode = "0",
                            product_desc = "-",
                            product_unit = "-",
                            product_discount1 = "-",
                            product_discount2 = "-",
                            product_discount3 = "-",
                            product_discount_limit1 = "0",
                            product_discount_limit2 = "0",
                            product_discount_limit3 = "0",
                            product_guarantee = "-",
                            product_quantity = "0",
                            product_id = "0",
                            product_name = item.product_name + " " + item.product_size + " " + "no equivalant exists",
                            product_price = "0",
                            product_size = "-",
                            product_brand = brandList
                        };
                        equivalantCart.Add(emptyCartItem);
                    }
                    else
                    {
                        for (int i = 0; i < found.Count(); i++)
                        {
                            var cartItem = new CartTemplate
                            {
                                product_commonCode = found[i].CommonCode.ToString(),
                                product_desc = found[i].Description,
                                product_discount1 = found[i].DiscountLimit1.ToString(),
                                product_discount2 = found[i].DiscountLimit2.ToString(),
                                product_discount3 = found[i].DiscountLimit3.ToString(),
                                product_quantity = item.product_quantity,
                                product_id = found[i].Code,
                                product_name = found[i].ItemName,
                                product_price = found[i].Price.ToString(),
                                product_size = found[i].Size.ToString(),
                                product_brand = found[i].Brand,
                                product_discount_limit1 = found[i].Limit1.ToString(),
                                product_discount_limit2 = found[i].Limit2.ToString(),
                                product_discount_limit3 = found[i].Limit3.ToString()
                            };
                            equivalantCart.Add(cartItem);
                        }
                    }
                }
                var obj = new HomePageViewModel
                {
                    ItemTypes = await db.ItemTypes.ToListAsync(),
                    Categories = await db.Categories.ToListAsync(),
                    Subcategories = await db.Subcategories.ToListAsync(),
                    LogoViewModel = await db.LogoViewModels.ToListAsync(),
                    Brands = await db.Brands.ToListAsync(),
                    Subbrands = await db.Subbrands.ToListAsync(),
                   ContactUsViewModel = await db.ContactUsViewModels.ToListAsync(),
                   selectedBrands = data.Select(s=>s.product_subbrand).Distinct().ToList(),
                    Cart = equivalantCart
                };
        });
        return View("CompareItemsList",obj);
    }

так что проще говоря!Помогите мне, я схожу с ума, потому что у меня есть почти то же самое где-то еще в этом проекте, и это работает, но разница в том, что представление - это модал начальной загрузки 3!
Раньше я делал это так, но вдругперестал работать, и я получил нулевой в моем контроллере:

<div class="col-xs-3">
            @using (Html.BeginForm("CompareItemsList", "Compare", FormMethod.Post, new { enctype = "multipart/form-data" }))
            {
                <div id="smartcart" hidden></div>
                <div class="col-md-6">
                    <select name="brandList" id="brandList" class="form-control">
                        @foreach (var item in Model.Subbrands)
                        {
                            foreach (var item2 in Model.selectedBrands)
                            {
                                if (item.Title != item2)
                                {
                                    <option>@item.Title</option>
                                }
                            }
                        }
                    </select>
                </div>
                <div class="col-xs-1">
                    <button type="submit" command="submit" class="btn btn-success" id="btna" value="compare">
                        Compare with this brand
                    </button>
                </div>
                <script>
                    $("#btna").click(function (evt) {
                        var data = {};
                        data.CartList = "cart_list";
                    });
                </script>
            }        
        </div>
...