当前位置: 首页 > news >正文

MVC基础——市场管理系统(二)


文章目录

  • 项目地址
  • 三、Produtcts的CRUD
    • 3.1 Products列表的展示页面(Read)
      • 3.1.1 给Product的Model里添加Category的属性
      • 3.1.2 View视图里展示Product List
    • 3.2 增加Product数据(Add)
      • 3.2.1 创建ViewModel用来组合多个Model
      • 3.2.2 在_ViewImposts里引入ViewModels
      • 3.2.3 添加Add的Action逻辑
      • 3.2.4 添加Add的视图
    • 3.3 编辑Product数据(Edit)
      • 3.3.1 创建Edit的Get请求的Action
      • 3.3.2 创建Edit的Post请求的Action
  • 四、Cashier Console的实现
    • 4.1创建Cashier的Index页面
      • 4.1.1 创建ViewModel
      • 4.1.2 创建Index页面的商品类的Action
      • 4.1.3 创建Index的view视图页面
    • 4.2 创建Cashier Index页面里的product展示
      • 4.2.1 product的controller里添加partial action用来分块展示商品
        • 1. 在ProductRepository里添加查询方法
      • 4.2.2 在Product的视图里添加商品表格的视图
      • 4.2.3 将上面的Partial View整合到Index页面里
        • 1. 将jquery的脚本添加到Layout页面
        • 2. 在Sales的Index视图里,使用jq引入product的partial view
    • 4.3 展示详细的商品信息
      • 4.3.1 点击商品Table实现行高亮
        • 1. 给需要高亮的地方,添加一个类名
        • 2. 静态文件里添加高亮样式
        • 3. 添加jq方法,显示高亮
      • 4.3.2 高亮之后,显示商品的详情
        • 1.获取商品的id
        • 2. 添加显示商品详请功能
    • 4.4 Sales Fom 页面
      • 4.4.1 添加Sales Form的视图
        • 1. 修改SalesViewModel
        • 2. 创建form的视图
        • 3. 只有选择商品后才显示表单
        • 4. 自定义验证,验证输入数量是否大于库存
      • 4.4.2 提交数量后,计算和出库并且展示最新信息
        • 1. 添加Transaction的Model
        • 2. 完善sell Action的功能
        • 3. 创建ViewComponent
    • 4.5 Trasactions 页面
      • 4.5.1 Trasactions的ViewModel创建
      • 4.5.2 controller里创建get请求的Action
      • 4.5.3 创建Get请求的视图
      • 4.5.4 创建Search的Action


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:

三、Produtcts的CRUD

  1. 创建Product的Model
  2. 创建ProductRepository

3.1 Products列表的展示页面(Read)

3.1.1 给Product的Model里添加Category的属性

  1. 修改ProductRepository.cs里的获取所有products的方法,根据是否有CategoryId来判断,查询出有Id的产品的Category类

在这里插入图片描述
2. 修改,查询单个product的方法,同样根据是否有id,来查询

public static Product? GetProductById(int productId,bool loadCategory = false)
{var product = _products.FirstOrDefault(x => x.ProductId == productId);if (product != null){var prod =  new Product{ProductId = product.ProductId,Name = product.Name,Quantity = product.Quantity,Price = product.Price,CategoryId = product.CategoryId};if (loadCategory && product.CategoryId.HasValue){prod.Category = CategoriesRepository.GetCategoryById(product.CategoryId.Value);}}return null;
}

3.1.2 View视图里展示Product List

  • 前端通过Product.Category.Name就可以获取Category 的Name属性

在这里插入图片描述

3.2 增加Product数据(Add)

  • 在Add的页面里,我们需要展示所有Category的分类在下拉框里,所以这个页面里面需要两个类,分别是Product和Category

在这里插入图片描述

3.2.1 创建ViewModel用来组合多个Model

  • 根目录下创建一个ViewModel的文件夹,并且创建ProductCategoryViewModel.cs ,并且给出默认值;
using WebApp.Models;namespace WebApp.ViewModels
{public class ProductCategoryViewModel{public List<Category> Categories { get; set; } = new List<Category>();public Product Product { get; set; } = new Product();   }
}

3.2.2 在_ViewImposts里引入ViewModels

  • 需要在_ViewImposts.cshtml里引入添加ViewModels,不然页面无法使用
@using WebApp;
@using WebApp.Models;
@using WebApp.ViewModels;
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

3.2.3 添加Add的Action逻辑

  • ProductsController.cs 里添加逻辑
  1. Add的Get请求的Action
    在这里插入图片描述
  2. Add的Post请求的Action

在这里插入图片描述

3.2.4 添加Add的视图

  • 引入ViewMoldes,该ViewModels,包含两个类Product和Category
@model ProductCategoryViewModel
  • 添加下拉选项

在这里插入图片描述

3.3 编辑Product数据(Edit)

3.3.1 创建Edit的Get请求的Action

  1. Product的Index页面,将ProductId传递给edit 的action
 <a class="btn btn-warning col-3 d-inline" asp-controller="products" asp-action="edit" /asp-route-id="@product.ProductId">Edit</a>
  1. 创建Edit 的get请求的action

在这里插入图片描述

3.3.2 创建Edit的Post请求的Action

  • 需要注意的是:Update的传参需要①通过product.CategoryId.Value获取可空类型的值,如果该值是空,则报错;②传递一个
[HttpPost]
public IActionResult Edit(ProductCategoryViewModel productCategoryViewModel)
{if (ModelState.IsValid){ProductsRepository.UpdateProduct(productCategoryViewModel.Product.ProductId, productCategoryViewModel.Product);return RedirectToAction("Index");}productCategoryViewModel.Categories = CategoriesRepository.GetCategories();return View(productCategoryViewModel);
}

四、Cashier Console的实现

4.1创建Cashier的Index页面

4.1.1 创建ViewModel

  • 在ViewModels文件夹下,创建SalesViewModel.cs,主要作用是,设置一个 用户传递选择的CategoryId和一个商品列表
using WebApp.Models;namespace WebApp.ViewModels
{public class SalesViewModel{public int SelectedCategoryId { get; set; }public List<Category> Categories { get; set; } = new List<Category>();}
}

4.1.2 创建Index页面的商品类的Action

  • SalesController.cs里面添加商品类别选择的Action,由于他只是展示一个下拉选项框,所以直接使用Get请求的Action;
  • 从CategoiresRepository里读取到商品类别的列表,并且实例化,返回给视图
public IActionResult Index()
{var salesViewModel = new SalesViewModel{Categories = CategoriesRepository.GetCategories()};return View(salesViewModel);
}

4.1.3 创建Index的view视图页面

  • 创建上面的页面的视图页面,展示下拉框,以及用占位
    将为完成的部分占位

在这里插入图片描述

4.2 创建Cashier Index页面里的product展示

  • 由于Cashier index页面里有:
    1. 所有商品类别的下拉框
    2. 根据商品类别选择后的所有商品列表

所以,需要使用partial view分别或者试图,然后拼接在一起

  • 效果展示:
    在这里插入图片描述

4.2.1 product的controller里添加partial action用来分块展示商品

  • 由于我们是需要从product的模型里读取商品的信息,所以partial view应该放入到ProductsController.cs里;
  • 添加一个Action

在这里插入图片描述

1. 在ProductRepository里添加查询方法
  • ProductsRepository.cs里,添加GetProductsByCategory()方法,用来根据CategortId 查询出来所有的商品
 public static List<Product> GetProductsByCategory(int categoryId){var products = _products.Where(x => x.CategoryId == categoryId).ToList();if (products != null){return products;}else{return new List<Product>();}}

4.2.2 在Product的视图里添加商品表格的视图

  • 只是一个商品表格展示的视图,在Product的视图里添加_ProductTble.cshtml,该视图只是整个页面的一个组件
@model List<Product>@if(Model !=null && Model.Count > 0)
{<table class="table table-bordered table-striped"><thead><tr><th

http://www.mrgr.cn/news/79636.html

相关文章:

  • 【C++】右值引用与移动语义详解:如何利用万能引用实现完美转发
  • 设置笔记本同时连接内外网
  • 前端H5移动端基础框架模板 :Vue3 + Vite5 + Pinia + Vant4 + Sass + 附源码
  • CSS 浮动定位
  • C++感受15-Hello Object 封装版 -下(上机)
  • 牛客月赛106(0/1最短路,树存最长链)
  • PCB设计规范
  • Centos7和9安装mysql5.7和mysql8.0详细教程(超详细)
  • Qt C++ 显示多级结构体,包括结构体名、变量名和值
  • TEA系列例题
  • 如何高效的向AI大模型提问? - 提示工程Prompt Engineering
  • 【考前预习】1.计算机网络概述
  • 深度学习实验十四 循环神经网络(1)——测试简单循环网络的记忆能力和梯度爆炸实验
  • 深入了解架构中常见的4种缓存模式及其实现
  • 在VMWare上安装openEuler 22.03-LTS
  • Mysql索引原理及优化——岁月云实战笔记
  • 嵌入式开发 - 工具记录
  • 【mysql】数据库存量数据双主实现
  • 北京大学《操作系统原理》课堂笔记(一)
  • LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程
  • leetcode-54.螺旋矩阵-day1
  • Adobe Premiere Pro 2024 [24.6.1]
  • 2022 年“泰迪杯”数据分析技能赛A 题竞赛作品的自动评判
  • MySQL-DML之数据表操作
  • 递归算法题(1)
  • C++小小复习一下