.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三大组件的相互关系


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

在视图中可以调用模型。

模型不能调用视图。

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

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


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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容