初识MVC,MVC里面的基本数据传递
MVC是一种表现形式,他将Web应用程序分成三个组件即:视图(View)控制器(Controller)模型(Model)。
M:Model 主要是存储或者是处理数据的组件
V:View 是用户接口层组件。主要是提供html模板并将Controller里获取的数据显示到页面中cshtml文件被用来处理视图的职责。
C: Controller 处理用户交互,负责处理业务,并获取数据装入Model中,然后交给视图。
ASPX是有一个前台页面类和一个后台页面类,前台页面类继承后台页面类,所以我们才可以在前台通过<%%>的形式访问到后台的对象。一般用户在浏览器输入url地址后,浏览器会去请求服务器,如果是动态的aspx页面,就会交给.NET Framwork框架去处理,服务器就会创建一个HttpHandler去处理这个请求,并且经过一系列的管道事件,在第八个管道的时候会创建页面类对象,打造页面控件树,在第11和12个管道之间就会调用后台类的ProcessRequest()方法,在经过一些处理后将页面发送给浏览器。
MVC是通过{Controller}/{action}/{id}的形式去访问控制器类里面的一个方法。浏览器拿到url首先去找Controller类,如果存在,找出下面的action方法。如果有参数可以传递参数,然后再action的方法里进行业务逻辑的处理,最后由action方法决定返回哪个视图。MVC实现了页面与数据的分离,降低了耦合度,使之操作更灵活,而且由于没有一系列的管道,比aspx的效率更高效一些。
MVC传递数据的方式有很多种,但本质上是一样的。
在控制器类里面我们可以写很多方法,如果需要返回视图,需要使用到View方法。View有很多重载,可以通过参数来选择要返回的视图。传递参数的例子以返回视图展示。
第一种:请求视图
视图
我们在控制器类中写的方法,是如何传递给视图的呢?通过源码看,会很直观。
这是编译后的程序集所展示的源码,在这里编译器将整个cshtml文件编译成一个类,凡是遇到标签(自动识别尖括号(<>)).就会调用父类的WebViewPage的BeginContext方法为其指明该标签应该加到"~/Views/Home/StuList.cshtml"这个页面上,凡是遇到C#代码,便直接输入。然后我们点进父类,下面截图父类的部分源码
我们找到了Model,下面再看看他是怎么样得到值得把
原来是绑定到ViewData上面的动态属性啊,但是ViewData的值从哪里来啊,继续往下面看
这个时候我们看到了,_viewData属性,翻到上上张图片,这个类不是定义了一个_viewData属性吗?原来视图的里面的值从这个变量中来的吗,等等,这个变量的值谁给的呢?
就是这个方法,这个方法在控制器类调用方法的时候,估计会调用这个方法,然后将控制器类的Model属性值赋值给视图的Model属性。这样就完成了数值传递的过程。
MVC传递值就是这样传递的,但是不可能我们就只穿一个对象进去吧,MVC扩展出来了一个动态类和两个数组类型的对象可以供我们使用。
就是
ViewBag(动态类) ViewData,TempData.
传递的Model只是加载ViewBag上的一个动态属性而已,所以我们可以给ViewBag添加任意属性,了解动态类参见(http://www.cnblogs.com/ljp-sun/p/4385409.html)在视图中,以同样的方式去取就好了。
具体用法
控制器类
视图
。
总结:
- MVC是一种设计模式,不同于ASPX,将Web程序分成三个部分:控制器、视图、模型。当发生一个请求的时候,服务器会先去找控制器,然后找出里面的方法,然后由方法决定调用什么视图。
- MVC传递数据是借助于动态属性的添加(Dynamic),控制器类的传递数据的对象和视图里面的数据对象不是相同的,但是在调用视图的时候,控制器会将对应的属性值赋给视图里的对应属性。
初识MVC,MVC里面的基本数据传递的更多相关文章
- ASP.NET MVC中将数据从Controller传递到视图
ASP.NET MVC中将数据从Controller传递到视图方法 1.ViewData ViewData的类型是字典数据,key-value 如:ViewData["Data"] ...
- 在ASP.NET MVC中以post方式传递数组参数的示例
最近在工作中用到了在ASP.NET MVC中以post方式传递数组参数的情况,记录下来,以供参考. 一.准备参数对象 在本例中,我会传递两个数组参数:一个字符串数组,一个自定义对象数组.这个自定义对象 ...
- 在ASP.NET MVC中以post方式传递数组参数的示例【转】
最近在工作中用到了在ASP.NET MVC中以post方式传递数组参数的情况,记录下来,以供参考. 一.准备参数对象 在本例中,我会传递两个数组参数:一个字符串数组,一个自定义对象数组.这个自定义对象 ...
- Spring MVC -- MVC设计模式(演示4个基于MVC框架的案例)
对于简单的Java Web项目,我们的项目仅仅包含几个jsp页面,由于项目比较小,我们通常可以通过链接方式进行jsp页面间的跳转. 但是如果是一个中型或者大型的项目,上面那种方式就会带来许多维护困难, ...
- ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送 ...
- ASP.NET MVC掉过的坑_MVC初识及MVC应用程序结构
APS.Net MVC 浅谈[转] 来自MSDN 点击访问 MVC 理论结构 模型-视图-控制器 (MVC) 体系结构模式将应用程序分成三个主要组件:模型.视图和控制器. ASP.NET MVC 框架 ...
- [转]Asp.Net MVC使用HtmlHelper渲染,并传递FormCollection参数的陷阱 【转】
在Asp.Net MVC 1.0编程中,我们经常遇见这样的场景,在新建一个对象时候,通过HtmlHelper的方式在View模型中渲染Html控件,当填写完相关内容后,通过Form把需要新建的内容Po ...
- MVC 使用Jquery的$.post传递参数
MVC中,如果要使用 $.post 给 COntroller 传递参数,需要类实现 属性 get set,这样才行
- Spring MVC 页面跳转时传递参数
页面仍然使用 JSP,在跳转时如果想传递参数则需要用到类 RedirectAttributes. 首先看看如何打开一个普通页面: // 登录页面(每个页面都要独立的 Action 来支持其呈现) @R ...
随机推荐
- JavaScript之数组循环 forEach 循环输出数组元素
var arrayAll = []; arrayAll.push(1); arrayAll.push(2); arrayAll[arrayAll.length] = 3; arrayAll[array ...
- 【MariaDB】MariaDB编译参数
参考: http://wangfeng7399.blog.51cto.com/3518031/1393146?utm_source=tuicool http://www.phperz.com/arti ...
- PowerDesigner生成Oracle数据字典
PowerDesigner版本信息 1.File-->NewModel... 2.选择模型 New Model Model types-->Physical Data Model --&g ...
- Linux日志
一.Linux 常見的日志文件 /var/log/cron:你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误?你的 /etc/crontab 是否撰写正确?在这个登录档内查询看看. ...
- CentOS 卸载已安装软件
根据软件的安装类型,选择合适的卸载方式: 卸载前确定软件的完整的版本号:#rpm -qa ×××*#rpm -ql xxx-xxx //查找安装目录 执行卸载命令:#rpm -e xxx-xxx # ...
- 新版本的pdo会有这个问题
新版本的pdo会有这个问题: General error: 2014 Cannot execute queries while other unbuffered queries are active. ...
- 双人对战的球类游戏IOS源码
双人对战的球类游戏源码,这个是一款双人对战的ios球类游戏源码,游戏的源码也比较详细的,我们在屏幕上下看到各有一个球门,内有一球,两边通过控制轮盘使球进入对方的球门的,其实玩法也很简单的,我们知道体育 ...
- Sqlserver数据库存储路径的修改
Sqlserver数据库存储路径的修改 Sqlserver数据库存储路径问题:本系统sqlserver路径默认是存储在C盘目录下的,由于数据会慢慢变大和避免重装系统数据丢失等问题,最好手动将路径设置在 ...
- Silverlight Color的颜色值
1.MainPage.xaml <UserControl xmlns:SysManage="clr-namespace:Application" x:Class=" ...
- synchronized的重入
/** * synchronized的重入 * */ public class SyncDubbo1 { public synchronized void method1(){ System.out. ...