ASP.NET Core MVC介绍

Wbe应用是.NET Core开发中常见的项目类型,无论是网站还是HTTP服务接口,都有提供对外Web访问的能力,而.NET Core中进行Web应用开发的核心底层技术是ASP.NET Core。
在ASP.NET Core这个底层基础上,微软开发了ASP.NET Core和ASP.NET Core API这两个框架。随着软件项目复杂度的增加及软件项目分工的细化,前后端分离已经成为主流开发模式,后端开发人员使用ASP.NET Core Web API开发服务接口,界面交互等有前端开发人员使用Vue等前端框架来完成。在ASP.NET Core MVC这种开发模式下,后端开发人员也仍然要编写一部分前端的代码,而在前后端分离的开发模式下,后端开发人员不在需要处理任何界面逻辑,而只是需要编写ASP.NET Core Web API。

编写第一个MVC程序

ASP.NET Core MVC采用MVC模式,也就是把页面交互的代码分为模型(model)、视图(view)和控制器(controller)3个部分。视图负责内容的展现,也就用来显示HTML网页;控制器负责处理用户的请求及为视图准备数据;模型负责在视图和控制器之间传递数据。

在MVC模式中,试听和控制器不直接交换、不互相依赖,彼此之间通过模型进行数据传输。使用MVC模式的优点是视图和控制器降低了耦合,系统的结构更清晰。

项目结构

1.控制器由Controller类实现,试图一般是扩展名为cshtml的文件,而模型则是只有属性的普通C#类。

2.控制器类的名字一般以Controller结尾,并且被放在Controller文件夹下。控制器的名字微控制器的类名去掉Controller。

3.视图一般被放到Views文件夹下的控制器名字的文件夹下。

4.视图->浏览器全提交的请求->模型->控制器->处理->模型->视图。渲染:Render。

下面演示一个在控制器中查询数据,然后把数据传递给视图进行渲染的案例。

第一步,在Models文件夹下创建一个Preson类,这个类包含代表姓名的Name属性,代表是否为VIP的IsVIP属性,以及代表创建日期的CreatedTime属性。

1
public record Person(string Name,bool IsVIP,DateTime CreatedDateTime);

第二步,在Controllers文件夹下创建一个继承自Controller类的TestController类。

1
2
3
4
5
6
7
8
9
public class TestController : Controller
{
public IActionResult Demo1() //Action 方法:操作方法
{
//return View();
Person p1=new Person("YOUXIANYU", true, DateTime.Now);
return View(p1);
}
}

控制器中方法的返回值一般是IActionResult类型的,控制器类中被外界直接访问的方法叫作“操作方法”。

Demo1方法中,我们创建了Person类的对象,并且为了对象的属性赋予了初始值,最后通过return View(mode1)方法告诉框架“请把mode1这个对象传递给与操作方法同名的视图”,因此狂就会把mode1对象传递给名为Demo1.cshtml的视图文件。

第三步,在Views文件下创建和TestController名称对应的Test文件夹,然后在Test文件夹上右击,选择添加Razor视图-空这个项目模板,文件名填写Demo1.cshtml文件。

1
2
3
4
@model WebApplication1.Models.Person
<div>姓名:@Model.Name</div>
<div>是否VIP:@Model.IsVIP</div>
<div>@Model.CreatedDateTime</div>

热重载

在以调试模式运行ASP.NET Core项目的时候,如果我们修改了服务器端的代码,必须终止并重新运行程序,修改后的代码才能生效。再比较复杂的项目中,这样的开发流程非常麻烦,因为我们需要重新打开浏览器、重新执行要测试请求。

可以用【启动(不调试)】方法运行项目,然后再修改代码后,重新生成解决方案,这样代码就生效了,不需要重启浏览器。不过在这种方式下运行程序,我们无法进行设置断点、查看变量的值等调试操作。

而.NET6开始,.NET中增加了热重载功能,它允许我们在以调试方式运行程序的时候,也无须重启程序而让修改的代码生效。它的用法很简单,只要在修改完代码以后单击Visual Studio工具栏中的热重载。

我们也可以单击热重载的下拉列表,勾选【文件保存时热重载】,这样当我们修改完代码并保存文件后,Visual Studio会自动执行热重载,开发就更方便。