Как отправить список <string>изображений в строковые изображения с jquery - PullRequest
0 голосов
/ 12 марта 2020

У меня есть некоторые данные в моей модели и изображения в модели. Изображения, поступающие из базы данных, и я хочу добавить это изображение в корзину с помощью jquery при нажатии кнопки. Я получаю все данные, кроме изображений здесь код. Модель. Изображения - это список строковых изображений, и я хочу, чтобы одно изображение было только в моем классе корзин с изображениями строк. Помогите.

@{
@model MobileModel
}
<button type="submit" class="addcartbtn mt-5" data-pid="@Model.Id" data-pname="@Model.Name" data-pprice="@Model.Price" data-purl="@Model.Images" data-pqty="1">
    <span class=" fa fa-shopping-cart"> Add To Cart</span>
</button>

Jquery Код

$(".addcartbtn").click(function (e) {
    e.preventDefault();

    var obj = {
        "Id": $(this).data("pid"),
        "Name": $(this).data("pname"),
        "Price": $(this).data("pprice"),
        "Images": $(this).data("purl"),
        "Quantity": $(this).data("pqty")
    }
    $(this).parents("#proditem").fadeOut(300);
    $.ajax(
        {
            url: "/Cart/Add",
            type: "GET",
            data:  obj
        }
    ).done(function (itemscount) {
        $("#cartitems").text(itemscount);
});

Класс корзины

public class ShoppingCartItem
{
    public int Id { get; set; }
    public string Name  { get; set; }
    public int Price { get; set; }
    public string Images { get; set; }
    public int Quantity { get; set; }
    public int Amount { get {return Quantity * Price;}}
}

Контроллер корзины, в который я хочу отправить данные

 public class CartController : Controller
    {
        [HttpGet]
        public int Add(ShoppingCartItem item)
        {
            ShoppingCart cart = HttpContext.Session.Get<ShoppingCart>(WebUtil.Cart);
            if (cart == null) cart = new ShoppingCart();
            cart.Add(item);
            HttpContext.Session.Set(WebUtil.Cart, cart);            
            return cart.NumberOfItems;
        }

Форма класса MobileModel, куда поступают данные

 public class MobileModel
    {
        public MobileModel()
        {
            Images = new List<string>();
        }
        public int Id { get; set; }

        public string Name { get; set; }

        public int Price  { get; set; }
        public List<string> Images { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Он не сохранит список изображений, если вы напрямую передадите данные списка в атрибут кнопки, вы можете change them to a string by comma to split.

<button type="submit" class="addcartbtn mt-5" data-pid="@Model.Id" data-pname="@Model.Name" data-pprice="@Model.Price" 
data-purl="@String.Join(",", Model.Images)"  data-pqty="1">
    <span class=" fa fa-shopping-cart"> Add To Cart</span>
</button>


  <script>
        $(".addcartbtn").click(function (e) {
            e.preventDefault();
            var obj = {
                "Id": $(this).data("pid"),
                "Name": $(this).data("pname"),
                "Price": $(this).data("pprice"),
                "Images": $(this).data("purl").split(',')[0],
                "Quantity": $(this).data("pqty")
            }
            ...
        });
    </script>

Или вы можете использовать ViewBag для передачи этого списка изображений. :

public IActionResult Index()
    {
        MobileModel mobileModel = new MobileModel()
        {
            Id = 1,
            Name = "aaaa",
            Price = 200,
            Images = new List<string>(){ "Image1","Image2","Image3"}
        };
        ViewBag.Images = mobileModel.Images;
        return View(mobileModel);
    } 


$(".addcartbtn").click(function (e) {
    e.preventDefault();
    var obj = {
        "Id": $(this).data("pid"),
        "Name": $(this).data("pname"),
        "Price": $(this).data("pprice"), 
        "Images": "@ViewBag.Images[0]",
        "Quantity": $(this).data("pqty")
    }
    ...
});
0 голосов
/ 12 марта 2020

В ShoppingCartItem Модель измените класс

public string Images { get; set; }

на

public List<string> Images { get; set; }

, затем в вашем файле бритвы получите изображение, подобное этому

@Model.Images[0]
...