前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC学习笔记04数据传递

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

作者头像
李郑
发布2018-03-01 19:08:00
2.4K0
发布2018-03-01 19:08:00
举报
文章被收录于专栏:漫漫全栈路漫漫全栈路

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


简单梳理一下:

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

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

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

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

Controller中的Welcome方法
Controller中的Welcome方法

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

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

编辑Welcome的View并通过路由传值
编辑Welcome的View并通过路由传值

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档