using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;using Microsoft.Extensions.Logging;using WebAPI.Models;namespace WebAPI.Controllers{ [Route(&34;)] [ApiController] public class ProductsController : ControllerBase { private readonly ILogger<ProductsController> _logger; ShopContext db; public ProductsController(ILogger<ProductsController> logger, ShopContext shopContext) { _logger = logger; db = shopContext; } //獲得所有商品 [HttpGet] public IEnumerable<Models.Products> GetAllProducts() { return db.Products.ToList(); } }}
//顯示頁面數據 public async Task<IActionResult> Index() { HttpClient httpClient = new HttpClient(); Task<string> task = httpClient.GetStringAsync(&34;); var result = await task; list = JsonConvert.DeserializeObject<IEnumerable<Products>>(result); return View(list); }
@{ ViewData[&34;] = &34;;}<h1>商品列表</h1><table class=&34;> <tr> <th>商品名稱</th> <th>商品價格</th> <th>操作</th> </tr> <tbody> @foreach (var item in Model) { <tr> <td>@item.Name</td> <td>@string.Format(&34;, item.Price)</td> <td><a href=&34;Detils&34;Home&34; class=&34;>添加到購物車</a></td> </tr> } </tbody></table>
//創建Redis客戶端對象 RedisCacheOptions options = new RedisCacheOptions() { InstanceName = &34;, Configuration = &34; }; redisClient = new RedisCache(options);
static IEnumerable<Products> list = null; static List<Products> listnew = new List<Products>(); static Dictionary<string, int> dis = new Dictionary<string, int>(); //實現購物車添加 public async Task<IActionResult> Detils(int id) { int num = 1; string result = string.Empty; if (list != null) { foreach (var item in list) { if (item.Id == id) { if (!listnew.Contains(item)) { listnew.Add(item); dis.Add(item.Name,num); } else { if (dis.ContainsKey(item.Name)) { int num_1 = dis[item.Name]; ++num_1; dis[item.Name] = num_1; } } var json = JsonConvert.SerializeObject(dis); redisClient.SetString(&34;, json); } } } var data = redisClient.GetString(&34;); ViewBag.Prod = JsonConvert.DeserializeObject(data); //ViewBag.Result = db.StringGet(&34;); return View(listnew); } //實現購物車減少 public async Task<IActionResult> Delete(int id) { string result = string.Empty; if (list != null) { foreach (var item in list) { if (item.Id == id) { if (listnew.Contains(item)) { if (dis.ContainsKey(item.Name)) { int num_1 = dis[item.Name]; --num_1; dis[item.Name] = num_1; if (num_1 == 0) { listnew.Remove(item); } } } var json = JsonConvert.SerializeObject(dis); redisClient.SetString(&34;, json); } } } var data = redisClient.GetString(&34;); ViewBag.Prod = JsonConvert.DeserializeObject(data); //ViewBag.Result = db.StringGet(&34;); return View(&34;,listnew); }
@{ ViewData[&34;] = &34;;}<h1>購物車</h1><table class=&34;> <tr> <th>商品名稱</th> <th>商品數量</th> <th>小計</th> <th>操作</th> </tr> <tbody> @foreach (var item in Model) { <tr> <td>@item.Name</td> <td>@ViewBag.Prod[item.Name]</td> <td>@string.Format(&34;, item.Price * Convert.ToInt32(ViewBag.Prod[item.Name]))</td> <td><a href=&34;Delete&34;Home&34; class=&34;>刪除</a></td> </tr> } </tbody></table>