什么是ASP.Net MVC?
HttpHandler是ASP.net的底层机制,如果直接使用HttpHandler进行开发难度比较大、工作量大。因此提供了ASP.Net MVC、ASP.Net WebForm等高级封装的框架,简化开发,他们的底层仍然是HttpHandler、HttpRequest等这些东西。比如ASP.Net MVC的核心类仍然是实现了IHttpHandler接口的MVCHandler。
ASP.net WebForm、和ASP.net MVC的关系?
都是对HttpHandler的封装框架,ASP.net WebForm是微软为了让开发ASP.Net像开发WinForm一样傻瓜化发明的框架,有很多缺点;ASP.net MVC采用了MVC的思想,更适合现代项目的开发,因此ASP.net MVC在逐步取代ASP.Net WebForm。
为什么ASP.Net MVC更好?
程序员有更强的掌控力,不会产生垃圾代码;程序员能够更清晰的控制运行过程,因此安全、性能、架构等更清晰。WebForm和ASP.netMVC在“入门”和“深入”两个要素之间正好相反。
什么是MVC模式?
模型(Model)、视图(View)、控制器(Controller)
ASP.net MVC与“三层架构”
ASP.net MVC与“三层架构”没有任何的关系。三层架构中的UI层可以用ASP.Net MVC来实现。
约定大于配置
“约定大于配置”:恶心的“配置文件地狱”,基础阶段按照默认配置来,先不管复杂、难懂的“路由”等。
ASP.net MVC 起步
项目的创建:讲课使用VS2015,用VS2013也可以,新建项目→Visual C#→Web→【ASP.Net Web应用程序】
,不要勾选【将Application
Insights添加到项目】,然后【确定】。在下一步的界面中选中“Empty”(初学者不要用MVC的模板项目,会太乱),勾选【MVC】,不要勾选【Host
in the cloud】。一定注意:上面图标选“empty”,不要选“MVC”;下面勾选MVC,否则会生成很多没用的代码。
2,控制器的建立、视图的建立
:在Controllers文件夹下点右键→【添加】→【控制器】→选择【MVC5控制器-空】,类的名字以Controller结尾,比如“TestController”,会自动在Views文件夹下创建一个Test文件夹(如果不新建就手动建,这个文件夹的名字必须是TestController去掉Controller),在Views/Test下新建视图Index(和TestController的Index方法一致):添加→视图
3,新建一个用来收集用户参数的类:IndexReqModel(类名无所谓)包含Num1、Num2两个属性(只要不重名,大小写都可以)。然后声明一个IndexRespModel类用来给view传递数据显示,有Num1、Num2、Result。也可以同一个类实现,但是这样写看起来比较清晰。
4,在Index.cshtml如下编写
调试启动后,浏览器访问:Index 画图分析执行过程、数据流动过程:当用户访问“/Test/Index?num1=1&num2=5”的时候,会找到Controllers下的TestController的Index方法去执行,把请求参数按照名字填充到Index方法的参数对象中(MVC引擎负责创建对象,给数据复制,并且进行类型的转换),reutrn
View(resp)就会找到Views下的和自己的“类名、方法名”相对应的Index.cshtml,然后把数据resp给到Index.cshtml去显示。@model
(要小写)
WebApplication2.Models.IndexRespModel表示传递过来的数据是IndexRespModel类型的,@Model(大写开头)指向传递过来的对象。
cshtml模板就是简化HTML的拼接的模板,最终还是生成html给浏览器显示,不能直接访问cshtml文件。