在上一节我们创建了与Index动作方法对应的Index视图,那么Index动作方法该如何向Index视图传送数据呢?其中一个方法是使用ViewBag(视图包)。让我们试试看。

在Index动作方法中添加一行代码。

        public ActionResult Index()
{
ViewBag.Today = DateTime.Now.ToLongDateString();
return View();
}

Today是我们自己命名的,看起来好像是ViewBag的一个属性,但ViewBag是动态对象,我们无需去事先声明Today。

在Index视图中要显示ViewBag的Today,我们需要添加如下代码。

<body>
<h1>MVC留言板</h1>
@ViewBag.Today
</body>

ASP.NET MVC3版本之后View采用Razor视图引擎,特点是以@符号作为标记-代码的转换字符。简单来说,就是在HTML标记中要写C#代码,在C#代码前加上@符号即可,更复杂的情况我们遇到了再解释。

ViewBag是动态对象,所以没有代码提示,必须手工将“Today”打出来。

运行之后,我们可以就看到Index方法传递给视图的当前系统日期了。

我们甚至可以将留言的内容通过ViewBag传送给Index视图并显示出来。在Index动作方法里我们添加一个ViewBag。

        public ActionResult Index()
{
ViewBag.Today = DateTime.Now.ToLongDateString();
ViewBag.Message = new string[] {"测试数据1", "测试数据2", "测试数据3", "测试数据4", "测试数据5", "测试数据6", "测试数据7", "测试数据8"};
return View();
}

在Index视图中要显示ViewBag.Message字符串数组的内容,我们需要编写更多的代码。

<body>
<h1>MVC留言板</h1>
@ViewBag.Today
@foreach(var s in ViewBag.Message)
{
<p>@s</p>
}
</body>

通过一个foreach循环可以获取ViewBag.Message中的所有字符串,注意这里代码和标签的混合使用。

运行之后看到结果。

使用ViewBag传递数据一大弊端在于作为动态数据没有代码提示,必须手写保证正确,不适合复杂对象的传递。如果只是传送一个简单的字符串的话,ViewBag还是很好用的。

ASP.NET MVC轻教程 Step By Step 3 ——使用ViewBag的更多相关文章

  1. ASP.NET MVC轻教程 Step By Step 1 ——入门

    使用ASP.NET MVC有一段时间了,本人还是非常喜欢ASP.NET MVC这个框架模式的.在经历了WebForm复杂粗暴的做法后,自然感觉简洁优雅的MVC清新可人,只不过WebForm和MVC的设 ...

  2. ASP.NET MVC轻教程 Step By Step 8——路由

    在前面的教程里,细心的你可能会有个疑问,就是地址栏输入/Home/Write就可以进入留言页面.无论是静态HTML还是ASP/ASP.NET.PHP,URL都是和某个页面相关.比如假设有个URL是“w ...

  3. ASP.NET MVC轻教程 Step By Step 13——页面布局

    一般在一个网站中页面会使用相同的结构和元素,如果每个页面都要重复添加这些元素,不仅繁琐更会给我们后期维护带来大麻烦.所以我们采用网页模板之类的技术,将固定不变的元素放入模板,同时留下一些占位符供页面各 ...

  4. ASP.NET MVC轻教程 Step By Step 12——客户端验证

    前面两节使用的两种数据验证方法都是在服务器端进行的,也就是提交了表单,数据回传给服务器才能验证.这样会带来两个问题,一是用户体验不好,用户提交了表单之后才知道存在问题:二是会给服务器带来额外的压力.我 ...

  5. ASP.NET MVC轻教程 Step By Step 9——分页

    现在我们要把Index视图的留言信息进行分页显示. Step 1. 创建路由 我们希望以类似地址http://localhost:41583/Page1来表示第一页,Page2表示第二页,以此类推.在 ...

  6. ASP.NET MVC轻教程 Step By Step 7——改进Write动作方法

    在上一节我们使用强类型视图改进Write视图获得更好的智能感知和代码重构,现在可以进一步的改进动作方法. Step 1. 数据模型绑定 在Save方法中我们使用Request来获取表单传送的值,其实可 ...

  7. ASP.NET MVC轻教程 Step By Step 6——改进表单

    上一节我们使用原始的HTML表单来完成留言功能,但是ASP.NET MVC提供了丰富的HTML辅助方法来帮助我们构建更简洁优雅的表单. Step 1. 修改Form标签 首先,我们可以使用Html.B ...

  8. ASP.NET MVC轻教程 Step By Step 2 ——View初探

    在上一节我们完成了一个最简化的MVC程序,最重要的是下面这段代码. public class HomeController : Controller { public string Index() { ...

  9. ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller

    ASP.NET MVC中的Model(数据模型)主要包括定义数据结构.数据库读写.数据验证等等和对象处理相关的工作. 在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Mess ...

  10. ASP.NET MVC轻教程 Step By Step 5——初识表单

    上一节我们将留言列表显示在Index视图里了,现在该添加一个留言的表单,好让用户自己添加留言. 首先在HomeController中添加一个名为“Write”的动作方法. public ActionR ...

随机推荐

  1. EXCEL VBA运行不显示系统提示

    Sub XXX() Application.DisplayAlerts = False '代码段 Application.DisplayAlerts = True End Sub 以下是MICROSO ...

  2. JavaEE学习笔记---数据库操作篇

    测试JDBC和SQLServer的插入操作,源码如下: import java.sql.Connection;import java.sql.DriverManager;import java.sql ...

  3. xCode里面设置NSZombieEnabled定位错误

    打开product ->scheme->Edit scheme

  4. JDK安装目录下的src

    学Java这么久,JDK目录下的包有哪些都不知道,今天偶然解压到src明白了许多道理 1.进入JDK安装目录,我的安装路径为:E:\JDK\jdk1.8.0,可以看到这里有个src压缩文件 2.直接解 ...

  5. 如何制作iso文件

    UltraISO 9.6.2.3059中文完美破解安装版 http://www.upantool.com/qidong/2011/UltraISO_v9.5.0.2800.html 软碟通v9.6.2 ...

  6. 经常使用虚拟现实仿真软件总汇(zz)

     经常使用虚拟现实仿真软件总汇(zz)http://hi.baidu.com/busycai/blog/item/fe57e41e5f25fa1c403417b2.html 2007年09月07日 星 ...

  7. 计算机体系结构 -内存优化vm+oom

    http://www.cnblogs.com/dkblog/archive/2011/09/06/2168721.htmlhttps://www.kernel.org/doc/Documentatio ...

  8. iOS-Storyboad动态刷新

    iOS-Storyboad动态刷新 什么叫做Storyboard动态刷新 在项目开发中,如果可以在xib(storyboard)中,动态显示运行效果图,那么实在是太爽了.在Xcode 6之后就为我们提 ...

  9. 第一章 Android体系与系统架构

    1. Dalvik 和 ART(Android Runtime) 在Dalvik中应用好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.在ART中应用好比是一辆组装好了的自行车, ...

  10. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...