C# Web开发教程(四)之MVC简单介绍

ASP.NET Core MVC (Model-View-Controller)模型-视图(前端)-控制器(接口)

未命名绘图-第 1 页

- 模型: 就是普通的C#类
- 视图: 名为"xxx.cshtml"的文件,就是前端
	- 视图一般被放到Views文件夹下的控制器名字的文件夹下。
- 控制器: 由Controller类实现
	- 控制器类的名字一般以Controller结尾,并且被放到Controllers文件夹下。控制器的名字为控制器的类名去掉Controller。
	
- 大致流程: 视图→浏览器端提交的请求→模型→控制器→处理→模型→视图(渲染)
  • 新建项目启动时,谷歌浏览器报错了

报错信息

- 这是因为项目使用了 HTTPS 协议,但浏览器不信任 ASP.NET Core 开发服务器自动生成的自签名证书

dotnet dev-certs https --clean
dotnet dev-certs https --trust

- 完全退出"谷歌浏览器",并重启IDE,问题解决

关于自签名证书的一点说明

自签名证书就像你自己给自己开具的“身份证明”,没有经过公认的“公安机关”(受信任的证书颁发机构,CA)的确认。因此,浏览器和操作系统无法自动验证其真实性,会出于安全考虑发出警告8dotnet dev-certs https --trust 命令的作用,其实就是把你这个“自己开具的身份证明”手动添加到系统的“可信名单”里。

  • demo实例演示
- 新建模型: Models.Person.cs

namespace WebApplication1.Models
{
	// 定义了一个名为Person的记录类型(record)
	// 关于record:语法糖+自己的特性
    public record Person(string Name,bool IsVIP,DateTime CreatedDateTime);
}

关键特性:

  1. 记录类型(Record):C# 9.0引入的新特性,主要用于封装数据
  2. 位置记录语法:简洁的声明方式,自动生成:
    • 只读属性
    • 构造函数
    • 解构方法
    • 基于值的相等比较实现
  3. 不可变性:记录类型的属性默认是只读的,创建后不能修改
  4. 值相等性:两个记录实例如果属性值相同,则被视为相等

与普通类的区别:

  • 普通类默认是可变的,而记录默认是不可变的
  • 普通类使用引用相等性,记录使用值相等性
  • 记录支持with表达式来创建修改后的副本
  • 记录自动生成ToString()GetHashCode()Equals()方法

记录类型特别适合用于DTO(数据传输对象)、值对象和不可变数据模型等场景。

- 控制器书写逻辑(筛选要渲染的数据): Controllers.TestController.cs

using Microsoft.AspNetCore.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class TestController : Controller
    {
        public IActionResult Demo1()
        {
			
			// 生成实例并返回
            var person = new Person("Tom",true,DateTime.Now);
            return View(person);
        }
    }
}


- 写视图前端: Views.Test.Demo1.cshtml(默认路由: https://localhost:7274/test/demo1,属性设置为"较新则复制")

@model WebApplication1.Models.Person
<div>姓名: @Model.Name</div>
<div>是否VIP: @Model.IsVIP</div>
<p>@Model.CreatedDateTime</p>
  • 跑起项目并测试结果

跑起来

posted @ 2025-09-15 10:11  清安宁  阅读(24)  评论(0)    收藏  举报