大学毕业对MVC的概念还不是很清晰,总觉得MVC是和三层一样的,是同一级别的架构。其实不然,三层架构是:BLL(业务逻辑层),DAL(数据库访问层),UI(页面显示层),而MVC仅仅是属于三层架构UI层。可以说MVC就是为了更好的展示数据,如果把三层架构比作一个完整的人,那么MVC就是这个人的脸,用来展示东西。说这么多就是给刚接触MVC的人从概念上明白MVC是个什么东西,就是一种理念,一种展示数据的模式。

  说到MVC不得不说很早以前拖拉控件的时代,微软开发了Windows系统让小白就能接触电脑这些高科技产品,使得普通用户用图形化界面替换掉以前Linux黑窗口的时代,不得不说微软成功了。后来,微软感觉把普通用户变成小白不过瘾,企图把开发人员也变成小白,推出了WebForm,个人感觉这种想法很好,很超前,可能在很多年之后就没有我们这些“程序员”了只有设计。但是放到现在还是不太现实,刚推出的时候感觉很新奇就研究了下,托拉拽感觉很爽,可是那时候使用WebForm的企业死的很惨,因为就页面隐藏域藏得那些东西神仙都不知道是什么鬼,并且性能也是差的不要不要的,结果很快的死了(从微软刚发布的.net core不支持WebForm就可以看出微软放弃把程序员变成小白了)

  言归正传,聊聊MVC把,M(model),V(view),C(control)。model是control和view之间通过实体传输数据,control返回一个视图view可以通过model(实体)传递。view的强类型页面就可以通过在control中的方法中return view(model) 来让view可以通过Model来点出来要传递的数据。如果把model绑定到input的value上就会根据model有没有数据来显示要修改该的页面。

  在每一个action中都要有return一个继承自JsonResult的对象,其中包括最常见的 ViewResult(return View())视图、JsonResult(return Json())json字符串、ContentResult(return Content())原样输出 等。

control和view之间除了这种强类型传递数据之外还有另外三种方法来传递数据

如下所示:

1.使用ViewData传递数据

我们在Controller中定义如下(类型是ViewDataDictionary,可以看出这个方式适合传递键值对):

ViewData[“Message_ViewData”] = “ Hello ViewData!”; 

然后在View中读取Controller中定义的ViewData数据,代码如下:

@Html.Encode(ViewData["Message_ViewData"]) 

js中读取ViewData中数据如下:

<pre name="code" class="javascript"><script type="text/javascript">
var viewData = '@ViewData["Message_ViewData"]';
</script>

2.使用ViewBag传递数据

我们在Controller中定义如下(其类型是dynamic可以动态的添加其类型,结构也变得多样化):

ViewBag.Message_ViewBag =  “ Hello ViewBag !”;  

然后在View中读取Controller中定义的ViewBag数据,代码如下:

@Html.Encode(ViewBag.Message_ViewBag)

js中读取ViewBag中数据如下:

<script type="text/javascript">
var viewBag= '@ViewBag.Message_ViewBag';
</script>

3.使用TempData传递数据

我们在Controller中定义如下(其类型是TempDataDictionary,也是适合传递键值对,但是这种传递数据的方式有种特点,就是只能存在两次http请求,只要取出来就会销毁,经过研究发现其原来是把数据存到session中,取出一次后就会自动把session销毁):

TempData[“Message”] = “Hello word!”; 

然后在View中读取Controller中定义的TempData数据,代码如下:

@Html.Encode(TempData["Message_TempData"]) 

js中读取TempData中数据如下:

<script type="text/javascript">
var tempData = '@TempData["Message"]';
</script>

浅谈.net MVC的更多相关文章

  1. 浅谈Spring MVC知识

    关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...

  2. JAVAEE企业级应用开发浅谈之MVC 中的V-VIEW视图

    Step1.情景概要 Hello,小伙伴们,好久不见,之前跟大家分享了三层架构与MVC思想,相信大家对于这两块内容有了相对清晰的个人认识了,既然我们讲到了MVC,这里我们接着这块内容继续往下深入,今天 ...

  3. 浅谈对MVC的认识

    MVC是model(模型),view(视图),Controller(控制)的缩写. 模型层负责提供数据,和数据库相关的操作都交给模型层处理: 视图层提供交互的界面,其输出数据: 控制层负责接收各种请求 ...

  4. 浅谈对MVC的理解

    1.MVC设计模式理解 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界 ...

  5. 【ASP.NET MVC系列】浅谈NuGet在VS中的运用

    一     概述 在我们讲解NuGet前,我们先来看看一个例子. 1.例子: 假设现在开发一套系统,其中前端框架我们选择Bootstrap,由于选择Bootstrap作为前端框架,因此,在项目中,我们 ...

  6. 【ASP.NET MVC系列】浅谈表单和HTML辅助方法

    [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP. ...

  7. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  8. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  9. 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

随机推荐

  1. 使用WebService调用第三方服务

    场景 某个系统服务由第三方提供,我方要使用到这个这个服务,就可以使用WebService的方式. 什么是WebService 关于什么WebService,官方是这么解释的: Web service是 ...

  2. 【文文殿下】【HAOI2008】硬币购物

    题目描述 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. 数据规模 di,s<=1 ...

  3. 基于scrapy-redis两种形式的分布式爬虫

    redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...

  4. isset()、empty()、is_NULL()的区别

    1,isset():变量不存在,或变量为null,返回false,否则返回true: 2,empty():变量不存在,或变量为null,返回true,另外"".0."0& ...

  5. USB-Redirector-Technician 永久破解版(USB设备映射软件)

    USB-Redirector-Technician 这个软件对于搞安卓刷机的人想必非常熟悉,淘宝破解版售价:38 一个的东西 除了远程刷机,用于映射一些小型设备是没问题的,只要网跟得上~ USB-Re ...

  6. Linux 重命名

    例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 其实在文本模式中要重命名文件或目录,只需要使用mv命令就可以了,比如说要将一个名为abc的文件 ...

  7. 【Qt】Qt在Windows下的开发与调试环境配置

    前文已经交待了从源码编译Qt自定义版本.现在可以开始配置一下开发与调试程序并写个Hello World了. 1. IDE 虽然Qt官方有VS插件使我们可以在VisualStudio中开发Qt应用,但我 ...

  8. Windows 计划任务之消息提醒

    Windows 计划任务之消息提醒 你肯定也有这种需求.想做一个计划任务,却发现老式消息提醒已经被微软禁止了. 或者就是很单纯的希望给系统弹出一个消息框而并非CMD的echo命令. so...how ...

  9. leetcode-59-螺旋矩阵 II

    题目描述: 给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ ...

  10. (JAVA作业)练习:创建一个类名为Fruit;包含实例变量:水果名称,颜色,价格,上市月份,有无种子 10个实例:苹果,香蕉,芭乐,柚子,李子,杨桃,猕猴桃,哈密瓜,葡萄,榴莲; 实现功能:提示用户输入水果品种编号,输出该水果的全部信息。

    class Lei { String name; String color; int price; int date; int num; String zz; void assemble(){ Sys ...