一、什么是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三大组件的相互关系

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

在视图中可以调用模型。

模型不能调用视图。

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

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

有产品需要推广,有软件需要定制,有开发能力的程序员们欢迎加QQ群870859459互相交流学习。同时进群的群友需要软件相关资源共享,资源整合,可以扫描群公告二维码或者添加博主个人微信WJH20180512加微信群(苏州软件开发资源整合群)。

.Net MVC 框架基础知识相关推荐

  1. Spring框架基础知识

    本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...

  2. ThinkPhp框架基础知识

    ThinkPhp是一个采用MVC框架,免费开源.快捷简单的OOP轻量级PHP框架. MVC分三个部分: Model 模型层:模型层是应用程序的核心,可以是一个实体或一种业务逻辑,在应用程序中有更好的重 ...

  3. Django框架基础知识汇总(有项目版)

    Web框架本质## web系统概念 1. Http,无状态,短连接 2. 浏览器(socket客户端).网站(socket服务端) web框架本质 import socket def handle_r ...

  4. 2022年Java应届生面试之Spring框架基础知识

    前言:工作的原因,最近没有及时更新相关系列.很抱歉!在复习Spring框架的同时也别忘了j2ee的相关知识理论wo~ 大家好!我是JAVA 中的Spring框架,我是一个开源的容器性质的轻量级框架. ...

  5. laravel框架基础知识总结

    一.laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全:以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 ...

  6. 后端 学习 前端 Vue 框架基础知识

    文章目录 一.Vue 基础语法学习 1.Vue 语法指令 2.Vue 实例属性 (1)el (2)data (3)methods (4)computed 3.事件修饰符 4.按键修饰符 5.Vue实例 ...

  7. php think框架,ThinkPHP框架基础知识

    ThinkPHP是一个PHP开发框架,使用面向对象的开发结构和MVC模式,简称tp框架. 1.框架是一堆代码的集合,里边有变量.函数.类.常量,里边也有许多设计模式MVC.AR数据库.单例等等,框架的 ...

  8. Spring5框架基础知识小结

    文章目录 1. 链接 2. Spring概述 2.1 Sprig框架概述 2.2 入门案例 3. IOC容器 3.1 IOC和DI 3.2IOC容器在Spring中的实现 3.3举例说明IOC为什么可 ...

  9. Hadoop框架--基础知识

    如果有天堂,天堂应该是图书馆的模样. –博尔赫斯 (不那么冷就更好了) 主要内容:Hadoop.hive.HBASE.zookeeper.MySQL.sqoop.kafka(有时间补).日志 一.什么 ...

最新文章

  1. 003_FastDFS分布式横向扩容和纵向添加storage
  2. matlab中大括号的使用 { },可以装4维的数据
  3. 23/100. Valid Parentheses
  4. SU suspecfk命令学习
  5. 知乎万赞:人并不是活一辈子,而是活几个瞬间
  6. mysql如何查看表拥有的键_如何查看表或列的所有外键?
  7. odata数据绑定_如何使用用于SQL Server集成服务的OData源将数据导入SQL Server数据库
  8. Windows下安装Hadoop
  9. 使用脚本把360极速浏览器修改为极速模式
  10. elasticsearch中forcemerge清除文件占用的磁盘空间
  11. thinkpad笔记本电脑更换固态硬盘
  12. Python|Leetcode《306》|累加数
  13. VMware宿主机与虚拟机之间的文件夹相互共享(看图操作)
  14. 已解决:GET http://localhost:8080/statics/js/jquery-3.4.1.js net::ERR_ABORTED 404
  15. 2020中国云计算公司排名 哪家的云服务器最好用?
  16. 单页双曲面 matlab,生成平面截单叶双曲面的gif动画的程序
  17. python 爬取裁判文书网
  18. Win10笔记本触摸板在按键时或刚按完键后无法正常使用的问题
  19. 【转】手机充电器原理
  20. facade设计模式

热门文章

  1. lucene ---- 黑马教程
  2. python 如何绘制分叉图
  3. ORA-01005: null password given; logon denied
  4. 【Go】用 Go 访问 Redis
  5. (转)SwitchyOmega规则列表
  6. Springboot2中文件上传报java.io.FileNotFoundException: C:\Users\WIzarder\AppData\Local\Temp\tomcat.8080.589
  7. 手机搜狐 html5,手机搜狐欲改版推全新域名及LOGO 着力Html5技术
  8. go Jenkins流水线极速打包镜像上传
  9. Kafka和Flink双剑合璧,Confluent收购Immerok引起业内广泛讨论
  10. linux arm关闭光栅,基于Linux的光栅检测系统的软件设计与实现.pdf