MVC,

V,就是View.视图

M,只应该是ViewModel.视图模型

C,Controller.控制器

我们需要怎么看待并使用这三者。

从你敲入url,我们可以做为入口。

当你敲入url并按了回车。我们的程序会去找到相应的Controller与Action,并在里面进行一系列的逻辑啊,什么的代码的运行。------Controller

然后如果你代码里面运行到了return View(model);

那么这个model,便会传给你的Action相应的页面-------------------------------------------------------------------------------View

首先,我们必须要做的,当然是协调这个model让它适应我们的视图,以呈现正确的,完整的信息。

那么我们接下来要做的,就是实现这个合适的model,并进行赋值,然后传给View让它来呈现给我们信息。

这个合适的model,就是ViewModel--------------------------------------------------------------------------------------ViewModel

个人认为,

至此,MVC的步骤便结束了。

不要把MVC当成一个循环。

很多时候很多人喜欢把MVC写成三角形,认为这三者是相互传递的,

Controller传递model给View,View接受并编辑model再传回给Controller,Controller接受model并直接编辑这个model再传递给下一个View,如此循环。

但是,我们应该认识到,无论做什么项目,存在数据库的数据才是真实的,写在内存里的数据,传来传去,说不定哪里就传错了。

当我们从后台Controller传给了视图View以后,我们就应该切断ViewModel与数据库的联系,要弱化View到Controller的关系。

即使在编辑完信息然后页面POST回来了一个完整的ViewModel,

我们也应该是对ViewModel进行接收,编辑,然后新建model,从数据库拿到最新的信息,赋值到新建的model,然后再传给下一个想要的页面。

这样才能保证,我们程序显示的数据,每次都是来自数据库的,是正确的。

再次认识ASP.NET MVC的更多相关文章

  1. 在不同版本的 IIS 上使用 ASP.NET MVC

    ASP.NET MVC Framework 依赖于 URL 路由.为了利用 URL 路由,可能不得不在 Web 服务器上执行额外的配置步骤.这些步骤取决于 Internet Information S ...

  2. asp.net MVC 3多语言方案--再次写, 配源码

    之前写了一篇asp.net MVC多语言方案,那次其实是为American Express银行开发的.有许多都是刚开始接触,对其也不太熟悉.现在再回过头去看,自己做一个小网站,完全用asp.net m ...

  3. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  4. ASP.NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

  5. 在ASP.NET MVC 4 on Mono中使用OracleClient in CentOS 6.x的问题记录

    在ASP.NET MVC 4 on Mono中使用OracleClient in CentOS 6.x的问题记录 前言 最近有个Web项目,业务功能不复杂,但是这个客户(某政府部门)有两个硬性要求:1 ...

  6. 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标

    通常我们需要监测ASP.NET MVC 或 Web API 的应用程序的性能时,通常采用的是自定义性能计数器,性能计数器会引发无休止的运维问题(损坏的计数器.权限问题等).这篇文章向你介绍一个新的替代 ...

  7. ASP.NET MVC 视图(四)

    ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...

  8. ASP.NET MVC Model验证(四)

    ASP.NET MVC Model验证(四) 前言 本篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现,前者是Model验证提供程序,而Mod ...

  9. ASP.NET MVC Model验证(三)

    ASP.NET MVC Model验证(三) 前言 上篇中说到在MVC框架中默认的Model验证是在哪里验证的,还讲到DefaultModelBinder类型的内部执行的示意图,让大家可以看到默认的M ...

随机推荐

  1. ActiveMQ 5 入门

    apache-activemq-5.13.2 ActiveMQ使用JAAS授权的配置方式 <plugins> <!– 使用login.config配置授权用户 --> < ...

  2. NGUI 指定视口大小

    由于只是给Uinty开发插件,对Unity没有系统的学习,对Unity的很多功能都不是非常了解,幸得其他Unity同事的耐心教导,才不至于想崩头.记录一下,避免重复犯错. NGUI可以建立指定视口大小 ...

  3. class.c 添加中文注释(2)

    /* Class Device Stuff */ int class_device_create_file(struct class_device * class_dev, const struct ...

  4. WSTMall网站系统最新官方版

    WSTMall V1.0是在thinkphp 的经典版本3.2.2基础上进行优化开发的, TP 3.2.2不是thinkphp的一个最新的版本,却是thinkphp最金典的一个版本,正所谓站在巨人的肩 ...

  5. 手把手教你玩GDB

    第一部分牛刀小试:启动GDB开始调试 1.       编译带调试信息的可执行程序:用gcc(g++)编译的时候带上-g选项即可 2.       启动GDB开始调试 (1)gdb program   ...

  6. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  7. Spring整合Redis

    1.相关jar包 除了Spring必须的jar外,还需要spring-data-redis,jedis,commons-pool,这里使用的是maven,也可以拿着url把jar包下下来 <!- ...

  8. C程序运行计时

    在标准的C/C++中最小的时间单位是毫秒ms,下面代码中clock_t是long: 每经过1ms clock()的值就增加1:常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元 ...

  9. Winform窗体的基本控件

    一.窗体的事件 每一个窗体都有一个事件,这个窗体加载完成之后执行哪一段代码 位置:(1)右键属性→事件→load 双击进入.(2)双击窗体任意一个位置进入 public partial class F ...

  10. bzoj[3238][ahoi差异]

    Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output HINT 2<=N<=5 ...