ASP.NET MVC学习笔记04数据传递

上一篇的末尾讲到了,在了解模型之前,先来看看ASP.NET MVC是如何将数据从控制器传递给视图的。


简单梳理一下:

控制器想要请求的URL,控制器类是给您写代码来处理传入请求的地方,并从数据 库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器 用来产生格式化过的HTML从而返回给浏览器.

控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。

最理想的模式下:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模板应该只和控制器所提供的数据进行交互。维持这种”隔离关系”可以帮助,保持代码的干净、测试性和更易维护。

比如,最开始的控制器的讲解时HelloController类中的Welcome方法从浏览器获取一个name和numTimes的参数,然后直接输出。如果使用视图,视图模板将生成动态的HTML,也就是说,需要通过合适的方式把数据从控制器传递给视图,从而生成动态HTML。如何实现呢,可以吧视图模板需要的动态数据(参数)在控制器中存放到一个ViewBag对象中,然后视图模板来访问这个对象,看下具体操作。

注意这里的类型是ActionResult ,将MessageNumTimes的值 添加到ViewBag对象里。ViewBag是一个动态的对象,所以在没有给 ViewBag放置属性时,它没有任何属性,您可以把任何您想放置的对象放入到ViewBag对象中。而MVC会自动将URL中的Query String映射到方法的参数中去。

然后来在View中给Hello添加一个视图,和前面一样,选中Views/Hello 文件夹,右键添加——带有布局的MVC5视图页(Razor)。在Welcome的对话框中填入Welcome确认。选择布局页,仍然选择Views/Shared/_Layout.cshtml .

模型绑定(model binder) 使得数据从URL传递给控制器。控制器将数据装入到ViewBag对象中,通过该对象传递给视图。然后视图为用户生成显示所需的HTML。

在上面的示例中,使用了 ViewBag对象把数据从控制器传递给了视图。在后面的文章中,将使用视图模型来将数据从一个控制器传递到视图中。用视图模型来传递数据,这一般是首选的办法。

到这里,这是一种”M”模型,但不是数据库的那种“M”模型。

下一篇,开始正式讲解基于数据模型和模型类来实现的M——Model.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端知识分享

Angular中ui-select的使用

最近工作一直很忙,没有时间整理知识,前几天项目中需要用到angular-ui-select,实现下拉框快速过滤效果,今天有时间研究了一下,终于搞明白了。

28160
来自专栏超然的博客

肢解 HTTP 服务器构建

所有请求数据都在 request对象中,数据解析,还需要 url, querystring模块

11510
来自专栏破晓之歌

移动web开发适配秘籍Rem(推荐) 原

9810
来自专栏IMWeb前端团队

Ques前端组件化体系(一)

Ques是一套组件化系统,解决如何定义、嵌套、扩展、使用组件。 项目地址:https://github.com/miniflycn/Ques 传统开发模式的痛点...

277100
来自专栏WindCoder

5月14日项目小结-微信中图片选择与上传

11220
来自专栏PHP在线

PHP判断远程图片或文件或url是否存在

//判断远程文件 function check_remote_file_exists($url) { $curl = curl_init($url); ...

37680
来自专栏Gcaufy的专栏

打造小程序组件化开发框架

这篇主要介绍在使用小程序数月之后,结合自己的开发习惯,总结出一套支持组件化的开发框架。希望对大家使用 WePY 有所帮助。

4.7K20
来自专栏专业duilib使用+业余界面开发

duilib中将xml封装为控件简单示例(简单自定义控件,封装几个基本控件合为1个自定义控件)

31370
来自专栏大内老A

ASP.NET MVC的客户端验证:jQuery的验证

之前我们一直讨论的Model验证仅限于服务端验证,即在Web服务器根据相应的规则对请求数据实施验证。如果我们能够在客户端(浏览器)对用户输入的数据先进行验证,这...

27090
来自专栏salesforce零基础学习

salesforce lightning零基础学习(七) 列表展示数据时两种自定义编辑页面

上一篇Lightning内容描述的是LDS,通过LDS可以很方便的实例化一个对象的数据信息。当我们通过列表展示数据需要编辑时,我们常使用两种方式去处理编辑页面:...

15420

扫码关注云+社区

领取腾讯云代金券