.Net6结构解析和传值方式
环境: .NET6
开发工具: Vs2022
创建web项目
此时我们可以通过VS的运行直接访问网站
层级解读
服务引用,在如下图菜单中添加各种服务
配置启动项
这里是用来配置 通过IIS 或者命令行、iis express启动时的端口,ip地址
wwwroot下是用来存放静态文件、js文件的
依赖项 用来管理Nuget程序包以及添加一些依赖项的
MVC的控制器、模型、视图
Appsettings 配置项,在.net core后配置文件由原先的.config 改成了json文件
Program 新语法的产出(顶级语法),在此之前控制台应用代码里必须有个main方法,但是在.net 6里则没有,可以直接写代码,要使用的一些注册信息也是写在这里
数据传值的多种方式
- Session 传值
后台: HttpContext.Session.SetString("tempName","妮妮");
前端: @Context.Session.GetString("tempName")
此时我们如果直接运行程序会报错,提示Session未注册,因为在APS.NET CORE的设计核心里就是最小化设计,需要的服务再进行注册,实现最小化设计理念
服务注册的方式:
在Program.cs文件里添加
builder.Services.AddSession();
app.UseSession();
2其他类型传值
这里和传统的MVC传值的方式是一致的,需要注意的是在retuern view()写返回值的时候,要是object,如果使用string类型,会导致查找的视图
ViewBag
dynamic传值,可以随便属性访问,运行时检测
后台赋值:ViewBag.TestProp = "Tenk";
前台取值:@ViewBag.TestProp
ViewData
字典传值
后台赋值:ViewData["TestProp"] = "cx";
前台取值:@ViewData["TestProp"];
Model
适合复杂数据的传递,强类型
后台赋值:
private List<CurrentUser> _UserList = new List<CurrentUser>()
{
new CurrentUser()
{
Id=1,
Name="Z",
Account="Administrator",
Email="177@qq.com",
LoginTime=DateTime.Now,
Password="123456"
}
};
ViewData["CurrentUserViewData"] = this._UserList[0];
前台取值:
@model CurrentUser//需要引用传递模型的命名空间
@{
ViewBag.Title = "Index";
CurrentUser userData = (CurrentUser)ViewData["CurrentUserViewData"];
}
通过 @userData.属性,可以获取到传递过来的模型里所有的属性
TempData
临时数据,可以跨action后台传递,存在session里面,用一次就清理掉。
后台赋值:TempData["TestProp"] = "Spider";//独立存储
前台取值:@TempData["TestProp"]