图解ASP.NET MVC项目运行
原文链接:https://jingyan.baidu.com/article/90bc8fc8ac2e52f653640c33.html
吾终日所思也,不如须臾之所学也,刚开始看mvc架构,与以前的winform完全不一样,一头雾水,看完此内容豁然开朗。
1、Global.asax—应用程序启动注册路由
当对网站发出请求时,应用程序是如何把请求引到对应的控制器及里面的Action方法?
首先网站一启动,会提前加载根据控制器和Action方法设置的路由规则,这样一请求,路由就会分析之后把请求引到对应的控制器和Action方法,如下图所示:
注:RouteConfig类位于App_Start文件夹下面。
2、控制器
1)根据前面的解析,每次请求都是先定位控制器,然后再根据路由规则找到对应的Action方法!
2)但是在路由表里,我们只写了Home,但是MVC框架约定,控制器都是以Controller结尾,并继承了基类Controller!
3)在这里Index方法返回值类型是ActionResult,方法名和路由注册的方法名一致,在Index方法内,调用了View方法并且返回,这是一个重载的方法,可以给个参数,作为返回视图的名称,如果没有参数,默认就是以当前Action命名的视图。
4)也就是Asp.netMVC架构,不像Java的MVC通过配置来建立关系,他是约定大于配置,如下图所示:
3、视图
视图里的代码类似于之前的ASPX里面的代码,主要是HTML、JS和CSS等前端技术构成,从MVC1.0到MVC5.0变化很大,Razor语法越来越完善,强大,如下图所示:
4、向视图传递数据
1)传统的WebForm方式,前置页面类和后置代码类是继承的关系,可以直接进行数据传递。
2)MVC模式下,视图和控制器是完全分离的,通过专用渠道传递数据,ViewData是在控制器和视图之间传递数据的容器之一,如下图所示:
5、ASP.NET MVC执行顺序,如下图所示:
6、Model和三层架构
MVC与三层架构之间有没有区别?
1)、MVC和三层架构没有必然的关系,架构的思想是不一样的。
2)、三层架构强调的是物理分离(多个项目构成),MVC强调的是逻辑分离(一个项目构成)。
3)、MVC中也可以体现三层架构,如下图所示:
7、有些MVC企业框架为了方便管理,会故意把Models做分层设计。
注意:在MVC中如果它不属于View也不属于Controller,那么就把它归到Model中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-11-14 sql server设置两个主键的方法
2022-11-14 SqlServer入门知识-创建临时表
2022-11-14 给定的 ColumnMapping 与源或目标中的任意列均不匹配。
2022-11-14 C#写日志两个简单方法
2022-11-14 \r,\n,\r\n的区别
2022-11-14 MultipleActiveResultSets=true 数据库连接复用
2022-11-14 DataTable.ImportRow()与DataTable.Rows.Add()的区别