欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.Net MVC 框架基础知识

程序员文章站 2023-04-04 10:40:40
一、什么是MVC? MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 一种软件设计典范 ......

一、什么是mvc?

mvc 是一种使用 mvc(model view controller 模型-视图-控制器)设计创建 web 应用程序的模式。

mvc全名是model view controller,是模型(model)-视图(view)-控制器(controller)的缩写, 一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。mvc被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。 view(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。 controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

一-1、认识mvc框架的结构

model(模型)表示应用程序核心(比如数据库记录列表)。 view(视图)显示数据(数据库记录)。 controller(控制器)处理输入(写入数据库记录)。

mvc 模式同时提供了对 html、css 和 javascript 的完全控制。

.Net MVC 框架基础知识

二、什么是model?(model在mvc中所起的作用)

model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。      所有的模型应该放到models目录下 

.Net MVC 框架基础知识

三、什么是view?及相关知识点

view(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。 所有的视图文件都应该放到views目录下. 如果在相应的视图目录中没有找到视图文件,那么会寻找views\shared目录下名称相同的视图文件 在aspx视图引擎中,可以使用asp服务器控件,但它的作用仅仅局限与生成html代码,而不推荐开发人员使用asp控件的事件.因此建议开发人员手工编写html标记。 但是手写html标记比较耗费时间,有没有更好的解决方案?答案就是使用html辅助方法。 html辅助方法的作用就是通过调用c#方法的方式,快速的生成相应的html标记. html辅助方法分为2大类:弱类型html辅助方法和强类型html辅助方法. 其中以for关键字结尾的都是强类型的辅助方法.下面的示例代码演示了二者的调用方式,以及生成的html源码。          

 

附:常用html辅助方法汇总

 

.Net MVC 框架基础知识

四、什么是controller?(controller在mvc中所起的作用)

controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 所有的控制器必须放到controllers文件夹下; controller必须为公开类; 所有的控制器类名必须以controller结尾; 所有的控制器类都应该继承controller基类或实现icontroller接口的类; 在action中return view(),默认会返回和action名称一样的视图文件. 在控制器类中的返回值为actionresult的公开方法,这些方法在mvc中称为action。

.Net MVC 框架基础知识

四-(1)、controller中的action

action用于响应用户的各种请求,比如向客户端返回html文档、html片段、json数据、纯文本、文件等结果。在asp.net mvc中通过在action(行为或操作)方法中返回actionresult类型的对象来实现向客户端响应上面的各种结果。

actionresult类是个抽象类(抽象类无法直接被实例化). actionresult有很多实现类,不同的实现类用于响应客户端不同的结果。并且在controller类中提供了大量的辅助方法,这些辅助方法可以快速的创建各种actionresult. 下面是详细介绍( actionresult 的实现类)。

*viewresult类 viewresult类的作用是向客户端响应view目录中一个视图文件. controller类中提供了view()方法,来快速的返回一个viewresult类对象. 如:return view (“index”); *contentresult类 该类用于向客户端返回一段文本内容(纯文本\html...). 在controller类中的辅助方法为:controller.content(string  content);

*redirecttorouteresult类 该类的作用是从当前action跳转至其他action. 在controller类中的辅助方法为:redirecttoaction(“actionname”, “controllername”) *redirectresult类 在服务器端从当前action跳转到其他url地址. 在controller类中的辅助方法为:controller.redirect(string  url)

jsonresult类 该类用于向客户端返回一段json格式的字符串. 在controller类中的辅助方法为:controller.json(object  data); 注意:默认情况下mvc拒绝响应以get方式发送的ajax请求,需要使用jsonrequestbehavior.allowget。

*partialviewresult类 该类的作用是向客户端响应views目录的一个分部视图文件。分部视图就是只包含html片段的视图文件. 在controller类中的辅助方法为:controller.partialview();

*filepathresult类 该类用于实现文件下载. 在controller类中的辅助方法为:controller.file(string  filepath,  string  contenttype, string  filename);

 .Net MVC 框架基础知识

四—(2)、如何在action中获取表单提交的数据?

诸如新增\修改等功能模块,我们往往会创建2个名称相同的action:一个action用于加载新增\修改页面;另一个action用于处理新增\修改页面提交的表单数据.那么如何区分在何时调用哪个action呢? 每种操作都对应两个方法重载,其中前面第一个没有特性前缀是http get模式访问服务器的,而第二个带有[httppost] attribute的方法是使用http post方式向服务器提交数据的。   第一个get方法用来显示初始化的界面,并处理客户端验证;这时如果用户数据有误,就根本不会进入第二个post方法。   如果js被浏览器禁用,第一个get方法只用来显示初始化界面,客户端验证失效,才会进入第二个post方法

.Net MVC 框架基础知识.Net MVC 框架基础知识

表单中提交的数据,可以通过action的参数进行映射. 映射的前提条件:html标记的name属性值和action中参数的名称要一致. 下面的示例代码演示了映射的过程(注意粉色框标记的部分):

.Net MVC 框架基础知识

我们还可以有另外一种等价的写法,就是将映射的属性定义到一个实体类中,这样我们就可以在action中添加该实体类型的参数,参考代码如下所示:

.Net MVC 框架基础知识

小结:mvc三大组件的相互关系

.Net MVC 框架基础知识

 

在控制器中可以直接调用视图和模型

在视图中可以调用模型。

模型不能调用视图。

模型能够限定视图中使用的数据,但视图中使用的模型应由控制器提供。

在视图中可以调用控制器(通过视图中表单的提交和点击超链接的方式调用)。