大学毕业对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. linux 配置msyql

    下面记录了如何在ubuntu16.04上安装mysql5.7的方法. sudo apt install mysql-server 安装时会让你输入mysql root用户的密码,并确认密码 sudo ...

  2. django系列6--Ajax01 特点, 基本格式, 向前端发送数据

    一.Ajax了解 AJAX(Asynchronous Javascript And XML)优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容 优点: 1.ajax使用Java ...

  3. SQL语句优化 (一) (52)

    优化SQL语句的一般步骤 1 通过show status命令了解各种SQL的执行频率. 格式:mysql> show [session|global]status; 其中:session(默认) ...

  4. “全栈2019”Java多线程第八章:放弃执行权yield()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. Java io流完成复制粘贴功能

    JAVA 中io字节输入输出流 完成复制粘贴功能: public static void main(String[] args) throws Exception{        // 创建输入流要读 ...

  6. tomcat 线程模型

    最近看到了内网ATA上的一篇断网故障时Mtop触发tomcat高并发场景下的BUG排查和修复(已被apache采纳),引起了我的好奇,感觉原作者对应底层十分了解,写的很复杂.原来对于tomcat的线程 ...

  7. HDU-1260-Tickets(线性DP,DP入门)

    Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  8. 题目1003:A+B(字符串转数字)

    问题来源 http://ac.jobdu.com/problem.php?pid=1003 问题描述 每次给你两个数,数的形式是每三位有一个间隔符',',计算两数之和. 问题分析 两个问题,一.如何读 ...

  9. 部署到docker容器后图片验证码显示不出来

    Dockerfile如下: FROM openjdk:8-jre-alpineARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java&qu ...

  10. webService基本概念、元素及简单编码实现

    webService "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源. 网络服务是相对于本地服务来说的,本机完成本机需要完成的任务,叫"本地 ...