.Net MVC 框架基础知识
一、什么是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 的完全控制。
二、什么是model?(model在mvc中所起的作用)
model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。 所有的模型应该放到models目录下
三、什么是view?及相关知识点
view(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。 所有的视图文件都应该放到views目录下. 如果在相应的视图目录中没有找到视图文件,那么会寻找views\shared目录下名称相同的视图文件 在aspx视图引擎中,可以使用asp服务器控件,但它的作用仅仅局限与生成html代码,而不推荐开发人员使用asp控件的事件.因此建议开发人员手工编写html标记。 但是手写html标记比较耗费时间,有没有更好的解决方案?答案就是使用html辅助方法。 html辅助方法的作用就是通过调用c#方法的方式,快速的生成相应的html标记. html辅助方法分为2大类:弱类型html辅助方法和强类型html辅助方法. 其中以for关键字结尾的都是强类型的辅助方法.下面的示例代码演示了二者的调用方式,以及生成的html源码。
附:常用html辅助方法汇总
四、什么是controller?(controller在mvc中所起的作用)
controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 所有的控制器必须放到controllers文件夹下; controller必须为公开类; 所有的控制器类名必须以controller结尾; 所有的控制器类都应该继承controller基类或实现icontroller接口的类; 在action中return view(),默认会返回和action名称一样的视图文件. 在控制器类中的返回值为actionresult的公开方法,这些方法在mvc中称为action。
四-(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);
四—(2)、如何在action中获取表单提交的数据?
诸如新增\修改等功能模块,我们往往会创建2个名称相同的action:一个action用于加载新增\修改页面;另一个action用于处理新增\修改页面提交的表单数据.那么如何区分在何时调用哪个action呢? 每种操作都对应两个方法重载,其中前面第一个没有特性前缀是http get模式访问服务器的,而第二个带有[httppost] attribute的方法是使用http post方式向服务器提交数据的。 第一个get方法用来显示初始化的界面,并处理客户端验证;这时如果用户数据有误,就根本不会进入第二个post方法。 如果js被浏览器禁用,第一个get方法只用来显示初始化界面,客户端验证失效,才会进入第二个post方法
表单中提交的数据,可以通过action的参数进行映射. 映射的前提条件:html标记的name属性值和action中参数的名称要一致. 下面的示例代码演示了映射的过程(注意粉色框标记的部分):
我们还可以有另外一种等价的写法,就是将映射的属性定义到一个实体类中,这样我们就可以在action中添加该实体类型的参数,参考代码如下所示:
小结:mvc三大组件的相互关系
在控制器中可以直接调用视图和模型
在视图中可以调用模型。
模型不能调用视图。
模型能够限定视图中使用的数据,但视图中使用的模型应由控制器提供。
在视图中可以调用控制器(通过视图中表单的提交和点击超链接的方式调用)。
下一篇: 如何优雅的使用AbpSettings
推荐阅读
-
How to debug ASP.NET MVC using source code
-
ASP.NET MVC实现功能:通过URL路由实现对多语言的支持
-
ASP.NET Core MVC/API(一)
-
Elasticsearch.Net使用教程 MVC4图书管理系统(2)
-
Asp.Net Core MVC项目实现多语言实例(Globalization/Localization)
-
.net MVC中使用forms验证详解
-
ASP.NET MVC Admin主页快速构建
-
Asp.net MVC SignalR来做实时Web聊天实例代码
-
Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之二 || 后端项目搭建
-
ASP.NET MVC用存储过程批量添加修改数据操作