上一篇文章详细介绍了如何利用ASP.NET MVC创建自己的页面,在文章介绍了如何利用ViewData由Controller向View文件传值,那新的问题再次出现,我们除了能显示aspx文件外还能显示其它的文件么?
本文将详细介绍如何向View传值。
一、ViewData与TempData属性来向View页传递对象
上文中已经提到,使用ViewData可以将数据由Controller传递到View,在前文中我们建立了RocketController类,在本文的示例中我们将这个Controller改一下。
我们将Index的参数移除,并提供了ViewData和TempData的赋值。在Views/Rocket/Index.aspx这个View中我们写以下代码:
注意上面的1.2不是行号,是我写的。
接下来我们运行工程,访问http://localhost:1750/Rocket/Index/,可以看到运行得到以下:
1.在这里显示ViewData
2.在这里显示TempData
再访问http://localhost:1750/Rocket/Index2显示结果为:
1.
2.在这里显示TempData
这里1显示是的ViewData中的内容,2为TempData传递的内容。我们可以看到ViewData只能在当前Action中有效。但是TempData可以类似于Session一样到其它页面仍然存在,但只限一页的访问(类似于Monorail中的Flash) TempData一般用于临时的缓存内容或抛出错误页面时传递错误信息。
二、通过ViewData.Model来传递对象
我们先建立一个Model:RocketIndexModel.cs。主要代码如下所示:
之后我们建立一个新的Action:Index3:
我们下面为Index3建立View文件,仍然是在Index3上点击右键AddView。
于是自动生成了一个View文件,我们运行看结果:
如何我们需要显示其他的文件,应该怎么处理?