ASP.NET MVC 是Windows系统下面的Web研发框架,有Microsoft提供。MVC顾名思义:Model, View, Controller.是UI端分层的三层模式。跟三层架构有着本质区别。.Net MVC彻底的分离了前后端,以及抽象层结构的依赖注入,横切编程模式。用于模型架构的ModelMedata,用于模型验证的ValidateProvider,用于数据提供的ValueProvider,用于数据绑定的ModeBinder,用于视图绑定的ViewEngine引擎等。构成了Asp.Net MVC架构的模式。
两者都是对HttpHandler的封装框架,ASP.NET MVC的思想,更适合现代项目的开发,因此会逐步取代WebForm
程序员有更强的掌控力,不会产生垃圾代码;程序员能够更清晰的控制运行过程,因此更安全、性能和架构等更清晰。入门“难”,深入“相对比较简单”
模型(Model)、视图(View)、控制器(Controller)Model负责在View和控制器之间进行数据的传递(用户输入的内容封装成Model对象,发送给Controller);要显示的数据由Controller放到Model中,然后扔给View去显示。Controller不直接和View交互
ASP.Net MVC与“三层架构”没有任何关系。唯一的“关系”:三层中的UI层可以用ASP.Net MVC来实现
1、新建项目——C#——Web——ASP.NET Web应用程序(不要勾选“将Application Insights添加到项目”)——确定;选中“Empty”——勾选MVC(不要勾选Host in the cloud)——确定
在Controller文件夹下右键——添加——控制器——选择“MVC5控制器-空”,
注意:类的名字以Controller结尾,会自动在View文件夹下创建一个对应名字的文件夹(没有就手动创建文件夹)
在View/文件夹名字 下创建视图Index(和XXXController的Index方法一致)
注意:添加视图时,模板选择Empty,不要勾选创建为分部视图和使用布局页
新建一个用来收集用户参数的类IndexReqModel(类名无所谓,可以随便起)包含Num1、Num2两个属性(只要不重名,大小写都可以)然后声明一个IndexRespModel类用来给view传递数据显示,有Num1、Num2、Result。也可以同一个类实现,但是这样写看起来比较清晰代码:
public class TestControler:Controller
{
public ActionResult Index(IndexReqModel model)
{
IndexReqModel resq = new IndexReqModel();
resq.num1 = model.Num1;
resq.num2 = model.Num2;
resq.result = model.Num1 + model.Num2;
return View(resq);
}
}
@model Test1.Models.IndexReqModel
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<input type="text" value="@Model.Num1" />+<input type="text" value="@Model.Num2" />=@Model.Result
</div>
</body>
</html>
在浏览器访问:http://localhost:56919/Test/Index?num1=1&num2=2
ps:每个人项目配置端口不尽相同,查看项目配置
注意:
1,@model Test1.Models.IndexReqModel //这里的model要小写开头,表示传递过来的数据是IndexReqModel类型的
2,@Model指传递过来的对象 //这里的Model要大写开头
3,cshtml模板就是简化HTML的拼接的模板,最终还是生成html给浏览器显示,不能直接访问cshtml文件