ASP.NET MVC 5 - (4) 将数据从控制器传递给视图
来源:互联网 发布:洛奇英雄传多核优化 编辑:程序博客网 时间:2024/04/28 15:19
http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-a-view
http://www.cnblogs.com/lonelyxmas/p/3568854.html
在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器。
控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模板应该只和控制器所提供的数据进行交互。维持这种"隔离关系"可以帮助,保持代码的干净、测试性和更易维护。
当前, HelloWorldController
类中Welcome
操作方法需要一个name
和一个numTimes
参数,然后直接输出给浏览器。相比只返回一个字符串,让我们来改变控制器,来使用视图模板吧。视图模板将生成动态的HTML,这意味着您需要通过适当的方式把数据从控制器传递给视图,从而才能生成动态的HTML。您可以把视图模板需要的动态数据 (参数)在控制器中放入到一个ViewBag
对象中,然后视图模板可以访问这个对象。
打开HelloWorldController.cs文件,更改Welcome
方法,将Message
和NumTimes
的值添加到ViewBag对象里。ViewBag
是一个动态的对象,这意味着在您没有给ViewBag
放置属性时,它没有任何属性,您可以把任何您想放置的对象放入到 ViewBag
对象中。 ASP.NET MVC model binding system 会自动将地址栏中URL里的 query string映射到您方法中的参数(name
和numTimes
)。
完整的HelloWorldController.cs文件如下所示:
using System.Web;using System.Web.Mvc;namespace MvcMovie.Controllers{public class HelloWorldController : Controller{public ActionResult Index(){return View();}public ActionResult Welcome(string name, int numTimes = 1){ViewBag.Message = "Hello " + name;ViewBag.NumTimes = numTimes;return View();}}}
现在ViewBag
对象包含了数据,并将自动传递给视图模板。 接下来,您需要一个欢迎视图模板 !在生成菜单中,选择生成 MvcMovie (快捷键 Ctrl+Shift+B) ,以确保项目编译成功。
在Views\HelloWorld文件夹上,右键单击”添加(视图)”,选择”MVC 5 View Page with (Layout Razor).”
在 “指定项名称 (Specify Name for Item )” 对话框, 输入”Welcome”, 点击“确定(OK)”.
在“选择布局(the Select a Layout Page)”对话框,接受缺省的”布局_Layout.cshtml”,并点击“确定(OK)”.
MvcMovie\Views\HelloWorld\Welcome.cshtml文件创建成功。
在Welcome.cshtml文件里替换标记, 您将创建一个循环,循环说多次“Hello”。
下面显示了完整的Welcome.cshtml文件。
@{ViewBag.Title = "Welcome";}<h2>Welcome</h2><ul>@for (int i = 0; i < ViewBag.NumTimes; i++){<li>@ViewBag.Message</li>}</ul>
运行应用程序,并浏览下面的 URL : http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4
现在,模型绑定(model binder) 使得数据从URL传递给控制器。控制器将数据装入到ViewBag
对象中,通过该对象传递给视图。然后视图为用户生成显示所需的HTML。
在上面的示例中,我们使用了ViewBag
对象把数据从控制器传递给了视图。在本系列教程后面的文章中,我们将使用视图模型来将数据从一个控制器传递到视图中。用视图模型来传递数据,这一般是首选的办法。BlogDynamic V Strongly Typed Views 有更加详细的介绍。
到这里,这是一种"M"模型,但不是数据库的那种“M”模型。让我们来创建一个电影数据库吧。
- ASP.NET MVC 5 - (4) 将数据从控制器传递给视图
- ASP.NET MVC 5 - 将数据从控制器传递给视图
- ASP.NET MVC 5 - 将数据从控制器传递给视图
- ASP.NET MVC 5 - 将数据从控制器传递给视图
- ASP.NET MVC5(3)数据从控制器传递给视图
- ASP.NET中MVC从后台控制器传递数据到前台视图的方式
- ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式
- Asp.Net Mvc 控制器与视图的数据传递
- ASP.Net MVC 给母版页视图传递数据
- ASP.Net MVC 给母版页视图传递数据
- APS.NET_MVC5学习笔记 - 将数据从控制器传递给视图
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- ASP.NET MVC中将数据从Controller传递到视图方法
- ASP.NET MVC框架(第三部分): 把ViewData从控制器传到视图
- ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
- ASP.NET中实现模型-视图-控制器(MVC)模式
- Easy UI组件在火狐浏览器中不能完全显示的解决办法
- 数据库冷备份
- 第二周作业
- 求最大公约数代码段
- LPTHW-advice from an old programmer
- ASP.NET MVC 5 - (4) 将数据从控制器传递给视图
- Fedora9 NFS配置
- linux free
- 2013.03.13 bootstrap 模态框使用
- ZOJ 3736 模拟魔方
- linux feof
- LeetCode Populating Next Right Pointers in Each Node
- 特征变换以及维度下降——前言
- (22)Formatter格式化类