从模型到视图:如何用 .NET Core MVC 构建完整 Web 应用

        MVC模式自出现以来便成为了 Web 开发的基石,它通过将数据、业务逻辑与用户界面分离,使得应用更加清晰易于维护,然而随着前端技术的飞速发展和框架如 React、Vue、Angular 等的崛起,许多开发者开始倾向于前后端分离的方式,甚至完全不再依赖传统的 MVC 架构。

本篇文章仅仅做一个简单的介绍,选择什么模式开发还是取决于具体的项目情况!

目录

初识.net core

新建.net core

目录内容介绍 

项目基本开发

初识.net core

        什么是.net?一个由微软开发的跨平台开源的开发平台,用于构建各种应用程序,提供了一整套用于构建和运行应用程序的工具和库,开发者可以使用.net来创建web应用、桌面应用、移动应用、云服务、游戏等多方面应用。

        什么是.net framework?是微软于2002年发布的开发平台,主要用于构建windows操作系统上的桌面应用、web应用和服务,其包含了丰富的类库如asp.net和winforms以及一个运行时环境,使得开发者可以使用多种编程语言构建应用程序。

        什么是.net core?由微软开发的开源跨平台的开发框架,用于构建现代化高性能的应用程序,支持在不同操作系统上开发和运行应用,与传统的.net framework不同,.net core是专为跨平台开发设计的因此可以在不同平台上运行相同的代码,如下图所示:

.net的发展节奏基本上是每年11月份会发布新主要版本,以支持开发人员及其企业规范提供路线:

想要了解更改关于.net core相关知识也可以随时阅读 官方文档 ,里面也是详细记载了.net core相关的一些方法是,如下所示:

简而言之:.net core是.net平台的一部分,针对跨平台开发进行了优化,而.net framework是较老的、只支持windows框架,随着.net5及后续版本的发布,微软通过统一的.net平台,结合了.net core是.net和.net framework的优势,推动了技术的现代化和跨平台发展。

新建.net core

这里通过visual studio工具进行项目编写,没有下载过该工具的可以参考我之前的文章:地址 ,这里不再赘述,接下来讲解如何新建.net core项目进行开发,如下所示:

创建项目:打开visual studio之后点击创建新项目,然后选择C#语言web方向,然后选择当下模型-视图-控制器方式的.net core项目,如下:

然后输入创建项目的名称及其解决方案的名称和文件位置,选择好点击下一步即可:

然后这里我们选择.net core8版本进行项目创建,其他的配置直接默认即可,然后点击创建可以看到我们的 .net core 项目已经成功的被创建出来了:

然后我们直接点击开始执行不调试项目,可以看到我们的项目已经被成功运行起来了:

目录内容介绍 

接下来我们对.net core框架生成的目录结构进行一一的介绍,框架生成的目录如下所示:

Connected Services:作用是项目用来链接服务的,我们可以右键它来添加链接服务,

Properties:项目配置文件,文件夹下面的launchSettings.json配置文件作用是在项目启动的时候进行配置,比如说IIS启动项目我们可以配置其域名和端口号,后期的协议、端口号等等配置也可以在该文件中进行设置,如下所示:

wwwroot:用于存放前端的一些静态文件:

依赖项:专门用来管理NuGet安装的一些程序包,引入项目的时候可以通过它进行处理:

Controllers:控制器文件,主要用来编写业务逻辑并做一些业务逻辑计算

Models:模型文件,主要作为数据传输的一个存储介质,如各种实例对象

Views:视图文件,主要作为一个表现层用来展示给用户查看

这些文件就是MVC(模型-视图-控制器)模型,这里后期就是我们项目进行开发的地方:

appsettings.json:也是一个配置文件,用于存储应用程序的设置和配置项,这个文件通常包含应用程序在运行时所需的配置信息,比如数据库连接字符串、日志设置、外部服务的 API 密钥、应用程序的自定义设置等:

Program.cs:是应用程序的入口点,包含了应用启动的核心代码,是整个应用程序启动过程的起点负责配置和启动应用程序所需的所有内容,自.net6引入了简化的托管api之后,Program.cs 变得更加简洁和集中,通常与Startup.cs文件的功能合并了:

项目基本开发

接下来我们开始正式进行.net core开发,如下所示:

添加控制器:我们直接右键控制器文件添加新的控制器

这里我们选择空的模板,然后输入控制器的名称然后点击添加即可,如下所示:

添加视图:控制台当中的每一个文件里的index方法称为一个action,我们在创建好的控制器文件当中右键选择添加视图,然后选择第二个非空视图进行添加,然后再添加创建即可:

这样在视图添加的过程当中就会对应的在Views文件夹里面生成一个和上面创建控制器的前面的名称保持一样的文件夹出来,文件夹里的文件是一个以.cshtml为后缀结尾的文件,其指定的Index就是我们之前创建的控制器当中的index方法,控制台

接下来我们就可以在项目中编写代码了,首先我们先在控制台当中编写将数据传递到视图的不同机制方法,如下所示:

1)ViewBag:动态对象,用于将数据从控制器传递到视图

2)ViewData:字典,用于存储和传递数据,视图可以通过键访问它

3)TempData: 用于跨请求传递数据,通常用于重定向后传递数据

4)Session:用于在用户会话期间存储数据,数据会在多次请求之间保持

5)返回视图:普通对象,作为模型传递给视图

虽然控制器通过return View(User5); 只传递了模型User5但控制器中设置的ViewBag、ViewData、TempData和Session会随着请求的上下文一同传递,因此视图可以访问到这些数据,如下:

使用Session的话我们需要在入口文件中进行一个注册:

最终程序的效果如下所示:

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

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

相关文章

深度学习详解

深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)中的一个子领域,利用多层次(深层)神经网络来自动从数据中提取特征和规律,模仿人脑的神经系统来进…

nmap详解

Nmap(Network Mapper)是一个开放源代码的网络探测和安全审核的工具。由于它的功能强大,被广泛应用于网络安全领域。以下是Nmap的一些主要功能及其在实战中的应用举例。 Nmap的主要功能: 端口扫描:检测目标主机上开放…

Tina Linux如何enable开机LOGO

想要在Tina Linux开机的时候显示开机LOGO,我们需要进行如下几步工作: 在Uboot设备树中添加对应的屏幕设备树节点.修改Uboot配置,让其在开机时自动加载LOGO到屏幕上.在boot-resource分区中添加对应的启动LOGO图片,并命名为bootlog…

SpringBoot常见的注解

Spring Boot 常见注解详解 在 Spring Boot 开发中,注解是简化开发过程和提高效率的核心工具。通过使用各种注解,我们可以实现依赖注入、配置管理、Web 开发、数据访问等功能。以下是一些常见的 Spring Boot 注解,并对每个注解的作用进行了详…

使用 Python 爬取某网站简历模板(bs4/lxml+协程)

使用 Python 爬取站长素材简历模板 简介 在本教程中,我们将学习如何使用 Python 来爬取站长素材网站上的简历模板。我们将使用requests和BeautifulSoup库来发送 HTTP 请求和解析 HTML 页面。本教程将分为两个部分:第一部分是使用BeautifulSoup的方法&am…

【QGIS入门实战精品教程】4.12:QGIS创建标识码(BSM)字段并生成标识码

文章目录 一、加载实验数据二、生成BSM三、说明一、加载实验数据 加载配套实验数据包(订阅专栏后,从私信查收)中的4.12.rar中的自然幢数据,如下图所示: 打开属性表,查看属性表中的BSM效果: BSM字段说明:字符串,10位长度,以1开头,从1开始的连续序号结尾,总长度为10…

【GL009】C/C++总结(一)

自查目录 1. typedef 和 #define 的区别 2. const 、volatile 和 static 的区别 3. const修饰指针 4. 数组指针和指针数组 5. 函数指针和指针函数 6. C/C内存管理 6.1 内存分布图解 6.2 C语言中的内存分配方式 6.3 堆(Heap)和栈(Sta…

Synchronizad优化原理(JUC)

目录 java对象头一:Monitor二:sychronized的优化轻量级锁(轻量级锁)锁膨胀(重量级锁)(重量级锁)锁自旋偏向锁(比轻量级锁更轻量)偏向锁状态如何撤销偏向锁批量…

Android显示系统(08)- OpenGL ES - 图片拉伸

Android显示系统(02)- OpenGL ES - 概述 Android显示系统(03)- OpenGL ES - GLSurfaceView的使用 Android显示系统(04)- OpenGL ES - Shader绘制三角形 Android显示系统(05)- OpenGL…

Vscode 构建 uniapp vue3 + ts 微信小程序项目

前言 为什么要使用 Vscode 来开发构建 uniapp 项目?从个人角度来讲,仅是想要 Vscode 丰富的插件生态,以及最重要的优秀的 TtypeScript 类型检查支持,因为本人是 TS 重度使用者。 如果你更习惯使用 js 进行开发,使用 …

[游戏开发] Unity中使用FlatBuffer

什么是FlatBuffer 为什么用FloatBuffer,优势在哪? 下图是常规使用的各种数据存储类型的性能对比。 对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输&…

软件工程 概述

软件 不仅仅是一个程序代码。程序是一个可执行的代码,它提供了一些计算的目的。 软件被认为是集合可执行的程序代码,相关库和文档的软件。当满足一个特定的要求,就被称为软件产品。 工程 是所有有关开发的产品,使用良好定义的&…

负载均衡策略:L(P)策略;L(Max) ;L(LDS)

负载均衡策略:L(P)策略;L(Max) ;L(LDS) 1. Proportion load distribution L(P)策略; 策略含义:服务器不配置为可变服务率,调度器按照服务器服务率的倒数比例分配负载。即每个服务器分配到的任务量与该服务器服务率的倒数成正比 2. (L(Max)) load distribution((L…

探店小程序:解锁商业新生态,定制未来

在数字化浪潮席卷全球的今天,商业的边界正在被重新定义。随着移动互联网技术的飞速发展,探店小程序作为一种新兴的商业模式,正以其独特的优势迅速成为连接商家与消费者的桥梁。我们刚刚为一家客户成功交付了一款集分销、分润、商业模式定制开…

从EXCEL表格到WEB TABLE的实践

前言 EXCEL管理数据 Bootstrap Bootstrap 是一个流行的开源前端框架,它由 Twitter 的员工开发,用于快速开发响应式和移动设备优先的网页和应用程序。 jQuery jQuery 是一个快速、小巧且功能丰富的 JavaScript 库。它简化了 HTML 文档的遍历、事件处理…

HarmonyOS(65) ArkUI FrameNode详解

Node 1、Node简介2、FrameNode2.1、创建和删除节点2.2、对FrameNode的增删改2.3、 FramNode的查询功能3、demo源码4、总结5、参考资料1、Node简介 在HarmonyOS(63) ArkUI 自定义占位组件NodeContainer介绍了自定义节点复用的原理(阅读本本篇博文之前,建议先读读这个),在No…

独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…

【总结·反思·汇报·思考02】裸辞后,我的一些感想和感悟。

Hello,大家好! 首先,我需要向大家道个歉,对不起!因为最近发生了一些事情,博客文章一直没有更新。(90度鞠躬道歉) 那么,最近到底发生了什么呢?相信大家已经从…

解密分布式锁:保障系统一致性的关键

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 目录 1. 前言 2. 为何要使用分布式锁&…

HarmonyOS-高级(一)

文章目录 一次开发、多端部署自由流转 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…