ASP.NET MVC轻教程 Step By Step 3 ——使用ViewBag

在上一节我们创建了与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还是很好用的。

时间: 2024-12-14 04:38:59

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

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

在前面的教程里,细心的你可能会有个疑问,就是地址栏输入/Home/Write就可以进入留言页面.无论是静态HTML还是ASP/ASP.NET.PHP,URL都是和某个页面相关.比如假设有个URL是“www.xxx.com/index.aspx?id=1",浏览器请求的页面是index.aspx,同时带有名为id值为1的参数.那为什么输入/Home/Write可以进入留言页面?你可能会认为其中Write是与write.cshtml对应,其实不然,动作方法名与视图名相同是约定,并不是铁律,我们完全可

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

上一节我们使用原始的HTML表单来完成留言功能,但是ASP.NET MVC提供了丰富的HTML辅助方法来帮助我们构建更简洁优雅的表单. Step 1. 修改Form标签 首先,我们可以使用Html.BeginForm来创建form标签.这样我们可以将原来的表单改成如下代码. @{Html.BeginForm("Save", "Home"); } <label for="nickname">昵称</label> <in

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

前面两节使用的两种数据验证方法都是在服务器端进行的,也就是提交了表单,数据回传给服务器才能验证.这样会带来两个问题,一是用户体验不好,用户提交了表单之后才知道存在问题:二是会给服务器带来额外的压力.我们可以使用客户端验证来解决这两个问题. 客户端验证一般使用Javascript脚本,JQuery.validate就是一个不错的JQuery验证组件,很多项目都会用它来实现客户端验证. Step 1. 添加脚本 ASP.NET MVC对JQuery有很好的支持,实际上后者已经集成在前者里面了,新建一

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

现在我们要把Index视图的留言信息进行分页显示. Step 1. 创建路由 我们希望以类似地址http://localhost:41583/Page1来表示第一页,Page2表示第二页,以此类推.在RouteConfig.cs中已有一条默认路由,但不能满足匹配类似/Page1这样的URL.我们要添加一条新的路由规则. public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource

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

一般在一个网站中页面会使用相同的结构和元素,如果每个页面都要重复添加这些元素,不仅繁琐更会给我们后期维护带来大麻烦.所以我们采用网页模板之类的技术,将固定不变的元素放入模板,同时留下一些占位符供页面各自填充不同的内容.在ASP.NET WebForm中这种技术叫母版页,在ASP.NET MVC中它叫布局. Step 1. 添加布局页面 在Views目录下添加一个新的视图,名叫“MyLayout”,当然你也可以起别的名字. 将MyLayout.cshtml的HTML代码修改一下. <!DOCTYP

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

ASP.NET MVC中的Model(数据模型)主要包括定义数据结构.数据库读写.数据验证等等和对象处理相关的工作. 在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Message”.包含三个属性:NickName(用户名).Content(内容).ReleaseDate(发布日期). public class Message { public string NickName { set; get; } public string Content { set; get;

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

上一节我们将留言列表显示在Index视图里了,现在该添加一个留言的表单,好让用户自己添加留言. 首先在HomeController中添加一个名为“Write”的动作方法. public ActionResult Write() { return View(); } Write动作方法没什么好解释的,接下来添加对应的Write视图. 我们依然采用空的视图模板.在视图中添加如下HTML代码. <body> <h1>MVC留言板</h1> <form action=&q

全网最全ASP.NET MVC 教程汇总

全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MV

自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习