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


文章目录

  • 项目地址
  • 一、创建项目结构
    • 1.1 创建程序以及Controller
    • 1.2 创建View
    • 1.3 创建Models层,并且在Edit页面显示
    • 1.4 创建Layou模板页面
    • 1.5 创建静态文件css中间件
  • 二、Categories的CRUD
    • 2.1 使用静态仓库存储数据
    • 2.2 将Categorie的列表显示在页面中(List)
    • 2.3 创建_ViewImport.cs文件,将有公共引入写入
    • 2.4 创建Edit页面的表单提交 (Update)
      • 2.4.1 给修改字段添加一些验证
      • 2.4.2 使用数据注解Data Annotations
    • 2.5 添加Add逻辑(Create)
      • 2.5.1 在Controller里添加Add的逻辑
      • 2.5.2 在Index页面添加Add按钮
    • 2.6 删除逻辑
      • 2.6.1 在Layout页面设置一个Js的异步Section
    • 2.7 使用Partial View处理重复代码
      • 2.7.1 使用ViewBag传递Controller的名称
    • 2.7.2 提取公共部分,不同的地方进行判断
    • 2.7.3 删除重复代码,使用partial视图
  • ViewModel的设计原则


项目地址

  • 教程作者:王教员

  • 教程地址:

https://www.bilibili.com/video/BV1Sn4y1o7EV?spm_id_from=333.788.player.switch&vd_source=791e6deaa9c8a56b1f845a0bc1431b71&p=6
  • 代码仓库地址:
https://github.com/CXTV/WebApp
  • 所用到的框架和插件:
.net 8

一、创建项目结构

1.1 创建程序以及Controller

  • 使用空的.net core程序来制作mvc结构
  1. 创建一个空的.net core程序
  2. 在Program.cs的程序入口,注册我们依赖项
var builder = WebApplication.CreateBuilder(args);

//1.注入服务
builder.Services.AddControllersWithViews();

var app = builder.Build();

//2.添加中间件
app.UseRouting();

//3.添加控制器
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}"
    );

app.Run();

  1. 创建controllers文件夹,并且添加一个HomeController.cs
  • 当一个url通过匹配后,先回找到对应的controller,然后根据页面的view,找到对应的action; 例如:用户访问了/Home/Index.html,就回找到下面的方法Index()
using Microsoft.AspNetCore.Mvc;

namespace WebApp.Controllers
{
   
    public class HomeController : Controller
    {
   
        public string Index()
        {
   
            return "Hello /Home/index";
        }
    }
}
  1. 通过访问https://localhost:7140/home/index就可以访问到返回的字符串

1.2 创建View

  1. 直接在HomeController里的Index() Action自动添加View,就会得到下面的文件结构,其中Home对应的就是HomeController控制器;Index.cshtml就是对应的action的视图文件
    在这里插入图片描述

  2. 将需要编辑的内容放入到视图页面/Views/Home/Index.cshtml
    在这里插入图片描述

1.3 创建Models层,并且在Edit页面显示

  1. 创建Models文件夹,并且添加Category.cs
namespace WebApp.Models
{
    public class Category
    {
        public int CategoryId { get; set; }
        public string? Name { get; set; }
        public string? Description { get; set; }
    }
}
  1. CategoriesController.cs里添加一个Edit页面,实例化Models里的类,并且传递给View()视图
public IActionResult Edit(int? id)
{
   
    
    var category = new Category
    {
   
        CategoryId = id.HasValue?id.Value : 0
    };
    return View(category);
}
  1. 创建一个Eidt的视图, 将Index页面传递的Id,展示在Edit页面里

在这里插入图片描述

1.4 创建Layou模板页面

  1. Views文件夹里Shared文件夹,并且创建_Layout.cshtml

在这里插入图片描述
2. 添加/View/_ViewStart.cshtml,全局的页面都将使用_Layout.cshtml页面作为模板页

@{
   
    Layout = "_Layout";
}
  1. 补充,如果其他页面想用其他的Layout,可以使用
Views/
├── _ViewStart.cshtml  // 全局的默认配置
├── Home/
│   ├── Index.cshtml
│   ├── _ViewStart.cshtml  // 只影响 Home 下的视图

  1. 其他页面只需要写@RenderBody()里面的内容即可
<h3 class="d-block">Categories</h3>
<div class="d-block">
    <ul>
        <li>
            <a href="/categories/edit/1">Beverage</a>
        </li>
        <li>
            <a href="/categories/edit/2">Meet</a>
        </li>
    </ul>
</div>

1.5 创建静态文件css中间件

  1. 添加ww

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/934432.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

strncpy在复制含有多个\0的字符串时遇到的问题

strncpy在复制含有多个\0的字符串的时候&#xff0c;会产生截断&#xff0c;因为strncpy在读取源字符串的时候&#xff0c;遇到了\0&#xff0c;函数会认为该字符串已经结束了&#xff0c;然后会向目标字符串内填充\0。 char buffer[100] "ak\0jl";for (int i 0; i…

C# 网络编程--基础核心内容

在现今软件开发中&#xff0c;网络编程是非常重要的一部分&#xff0c;本文简要介绍下网络编程的概念和实践。 C#网络编程的主要内容包括以下几个方面‌&#xff1a; : 上图引用大佬的图&#xff0c;大家也关注一下&#xff0c;有技术有品质&#xff0c;有国有家&#xff0c;情…

驱动---1.DAC8552实现三角波输出

最近开始进行新项目的研发&#xff0c;考虑用DAC做一个前级输出&#xff0c;选择了DAC8552这个器件的一个模块&#xff0c;用了野火的指南者做主控&#xff0c;芯片是STM32F103VET6&#xff0c;主频是72MHz。 一、器件手册重要信息提取 1.DAC8552具有十六位的分辨率、双通道输…

Elasticsearch入门之HTTP基础操作

RESTful REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是&#xff0c;客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在…

计算机启动过程 | Linux 启动流程

注&#xff1a;本文为“计算机启动、 Linux 启动”相关文章合辑。 替换引文部分不清晰的图。 探索计算机的启动过程 Aleksandr Goncharov 2023/04/21 很多人对计算机的启动方式很感兴趣。只要设备开启&#xff0c;这就是魔法开始和持续的地方。在本文中&#xff0c;我们将概…

【数据分享】1901-2023年我国省市县三级逐年最低气温数据(Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月最低气温栅格数据和Excel和Shp格式的省市县三级逐月最低气温数据&#xff0c;原始的逐月最低气温栅格数据来源于彭守璋学者在国家青藏高原科学数据中心平台上分享的数据&#xff01;基于逐月栅格数据我们采用求年平均值的方法得到逐年最…

Hash、HASHTABLE底层原理【Redis对象篇】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…

YOLOv11改进,YOLOv11添加GSConv卷积+Slim-neck,助力小目标检测,二次创新C3k2结构

实时目标检测在工业和研究领域中具有重要意义。在边缘设备上,巨大的模型难以满足实时检测的要求,而由大量深度可分离卷积(depth-wise separable convolution)构建的轻量级模型又无法达到足够的精度。作者引入了一种新的轻量级卷积技术——GSConv,以减轻模型重量同时保持精…

利用Java爬虫MinC根据ID获取商品详情的完整指南

在当今数字化时代&#xff0c;获取商品详情数据对于市场分析、价格监控和竞争对手分析至关重要。Java作为一种强大且广泛使用的编程语言&#xff0c;非常适合开发复杂的爬虫系统。本文将详细介绍如何利用Java编写爬虫程序来根据商品ID获取商品详情&#xff0c;并提供完整的代码…

IP地址中的网络号:定义、作用与重要性

在计算机网络中&#xff0c;IP地址是每台设备的唯一标识。它由网络号和主机号两部分组成&#xff0c;其中网络号用于标识一个特定的网络&#xff0c;而主机号则用于区分该网络内的不同设备。网络号的正确分配和管理&#xff0c;是IP网络互联互通的基础。本文将带您走进网络号的…

java_连接数据库的方法_后端处理_前端调用_打通整体思路

参考&#xff1a;14 尚上优选项目-平台管理端-权限管理模块-开发角色管理接口&#xff08;上&#xff09;_哔哩哔哩_bilibili 第一步. 定义数据 在数据库中定义好数据&#xff08;如role表格&#xff09;&#xff0c;在java后端定义好对应的实体类&#xff08;Role类&#xf…

PHP富文本编辑器eWebEditor实战指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;eWebEditor是一个基于PHP的开源在线文本编辑器&#xff0c;提供类似Word的用户界面&#xff0c;简化了网页文本的创建和编辑过程。它广泛适用于博客、论坛、CMS等平台的内容管理&#xff0c;具备富文本编辑、表格…

docker nginx 部署vue 实例

1.安装docker https://blog.csdn.net/apgk1/article/details/144354588 2. 安装nginx docker 安装 nginx-CSDN博客 3. 复制 nginx-test 实例的一些文件到宿主机中&#xff0c;目前已 /home/jznh/路径演示 3.1 在/home/jznh/ 创建 conf html logs 三个文件夹&#xff0c;…

一个直接看央视频道的软件,可直接安装到TV

优点 打开无广告&#xff0c;直接自动默认打开央视频道加载速度快&#xff0c;切换频道响应快&#xff0c;不用转圈圈画质清晰&#xff0c;画质清晰无雪花频道多&#xff0c;差不多上百个频道 软件截图 下载链接 跳转原文下载

JavaEE之多线程的风险以及如何避免

上文我们了解了单线程以及线程的一些基本常见方法&#xff0c;但是多线程在一些方面会存在安全问题&#xff0c;此文我们来为多线程的安全 保驾护航&#xff01;&#xff01; 详情请见下文 1. 多线程带来的风险——线程安全 1.1 观察线程不安全 /*** 使用两个线程&#xff0c…

【OpenCV】直方图

理论 可以将直方图视为图形或曲线图&#xff0c;从而使您对图像的强度分布有一个整体的了解。它是在X轴上具有像素值(不总是从0到255的范围)&#xff0c;在Y轴上具有图像中相应像素数的图。 这只是理解图像的另一种方式。通过查看图像的直方图&#xff0c;您可以直观地了解该…

MoeCTF2024-Web题解

目录 1、弗拉格之地的入口 2、垫刀之路01: MoeCTF&#xff1f;启动&#xff01; 3、ez_http 4、ProveYourLove 5、弗拉格之地的挑战 6、ImageCloud前置 7、垫刀之路02: 普通的文件上传 8、垫刀之路03: 这是一个图床 9、垫刀之路05: 登陆网站 10、垫刀之路06: pop bas…

python学opencv|读取图像(六)读取图像像素RGB值

【1】引言 前序已经掌握了如何获取灰度图像的像素&#xff0c;文章链接为&#xff1a; python学opencv|读取图像&#xff08;五&#xff09;读取灰度图像像素-CSDN博客 实际上像素就像一个坐标轴&#xff0c;约束了图像的大小。 但实际上我们在学习过程中&#xff0c;对于同…

ThingsBoard规则链节点:RabbitMQ 节点详解

ThingsBoard 是一个开源的物联网平台&#xff0c;允许开发者快速构建IoT产品。它提供了设备连接、数据收集、处理和可视化等功能。为了实现高效的数据处理和消息传递&#xff0c;ThingsBoard 集成了多种消息队列服务&#xff0c;其中就包括了RabbitMQ。 RabbitMQ 是一个广泛使用…

如何创建基于udp的客户端和服务端

1.先创建好udpServer.hpp、udpServer.cc、udpClient.hpp、udpClient.cc的框架。 #pragma once #include <string> #include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <cerrno> #include…