обновить данные сеанса из ViewModel - PullRequest
0 голосов
/ 05 августа 2020

здесь я обновил свое количество. как я буду использовать или вводить это обновленное количество?




        [HttpGet]

        public ActionResult Details(int? id)
        {
            ViewBag.product = _db.Spray.ToList();
            if (id == null)
            {
                return NotFound();
            }

            var hi = _db.Spray.Include(c => c.ProductTypes).FirstOrDefault(c => c.Id == id);

            ProductVm product = new ProductVm
            {
                Name = hi.Name,
                Id = hi.Id,
                Image=hi.Image,
                Image1=hi.Image1,
                Quantity = hi.Quantity,
                Price = hi.Price,
            };
           

            if (product == null)
            {
                return NotFound();
            }

            return View(product);
        }



        [HttpPost]
        [ActionName("Details")]

        public async Task <IActionResult> ProductDetails(ProductVm pb)
        {

            List<Spray> sprays = new List<Spray>();

            //if (id == null)
            //{
            //    return NotFound();
            //}

            //var yes = _db.Spray.Include(c => c.ProductTypes).FirstOrDefault(c => c.Id == id);


            ProductVm product = new ProductVm()
            {
                Name = pb.Name,
                Id = pb.Id,
                Image = pb.Image,
                Image1=pb.Image1,
                Quantity = pb.Quantity,
                Price = pb.Price,
             
            };
          

            if (product == null)
            {
                return NotFound();
            }
            sprays = HttpContext.Session.Get<List<Spray>>("sprays");
            if (sprays == null)
            {
                sprays = new List<Spray>();
            }
            sprays.Add(product);
            HttpContext.Session.Set("sprays", sprays);

            return RedirectToAction(nameof(Index));
        }


        [HttpGet]
        public IActionResult Cart()
        {

            List<Spray> sprays = HttpContext.Session.Get<List<Spray>>("sprays");
           
            
            if (sprays == null)
            {
                sprays = new List<Spray>();
            }
            return View(sprays);
        }


image

приведенный выше код, я изменяю увеличение и уменьшение количества для расчета. но эти данные сеанса обновления значения не могли выбрать. для этого я обнаружил здесь проблему, которую нужно обработать для проверки. Я не могу найти актуальные данные о количестве, которые я обновил cart.cs html. здесь мой вывод обновил количество, используя jquery enter image description here


using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using HuddsonBay.Data;
using HuddsonBay.Models;
using HuddsonBay.Utility;
using Microsoft.AspNetCore.Mvc;

namespace HuddsonBay.Areas.Customer.Controllers
{
    [Area("Customer")]
    public class OrderController : Controller
    {
        private ApplicationDbContext _db;

        public OrderController(ApplicationDbContext db)
        {
            _db = db;
        }

        [HttpGet]
        public IActionResult Checkout()
        {
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task Checkout(Order anOrder)
        {
            //session theke data peck

            List sprays = HttpContext.Session.Get>("sprays");

            if (sprays != null)
            {
                for each (var mobile in sprays)
                {
                    OrderDetails orderDetails1 = new OrderDetails();
                    orderDetails1.ProductId = mobile.Id;
                    anOrder.OrderDetails.Add(orderDetails1);
                }
            }
            anOrder.OrderNo = GetOrderNo();
            _db.Orders.Add(anOrder);
            await _db.SaveChangesAsync();
            HttpContext.Session.Set("sprays", new List());

            return RedirectToAction(nameof(Checkout));
        }

        public String GetOrderNo()    //for count order number
        {
            int rowCount = _db.Orders.ToList().Count() + 1;
            return rowCount.ToString("000");
        }
    }
}

above view, the list of item session data can not pick my updated quantity. how I solved this problem. I am facing problem in order of the value of the quantity. I am beginner, please anyone help. введите описание изображения здесь

1 Ответ

1 голос
/ 06 августа 2020

Вот демонстрация, чтобы показать, как передать List контроллеру с помощью ajax :

Spray :

public class Spray
    {
        public int Id { get; set; }
        public string Image { get; set; }
        public string Name { get; set; }
        public int Quantity { get; set; }
        public int Price { get; set; }
        public int Total { get; set; }
    }

Controller :

 [HttpGet]
        public IActionResult Cart()
        {
            List < Spray > sprays= new List<Spray> { new Spray { Id = 1, Name = "product1", Price = 10, Quantity = 1, Total = 1,Image="image1.png" }, new Spray { Id = 2, Name = "product2", Price = 20, Quantity = 1, Total = 20,Image="Image2.png" } };
            return View(sprays);
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> SendSprays([FromBody]IList<Spray> t) {
            return RedirectToAction(nameof(Cart));
        }

Cart.cs html:

image

результат: введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...