[原创] asp.net mvc 花样传值(二)
发表时间:2011/4/17 17:44 | 点击:93 | 作者: |
来自:mvcapp | 标签:
asp.net mvc中的传值有很多种方法,比如用ViewData、ViewBag等若类型传值,还有继承自一个IEnumerable泛型接口的强类型传值,或一个自定义的实体类viewModel的方式传值,今天我们来介绍如何从数据表中取得数据,并用ViewData、ViewBag传递到View页面。
1.新建一个asp.net mvc应用程序,命名为MvcApp

2.新建一个数据库,并命名为MvcAppTest

3.建立一个表demo。表的定义如下图

4.在VS中新建一个LINQ to SQL类 并命名为Linq,把刚刚的MvcAppTest表拖进去

4.修改HomeController的代码,如下:
02 | using System.Collections.Generic; |
08 | namespace MvcApp.Controllers |
10 | public class HomeController : Controller |
12 | public ActionResult Index() |
14 | LinqDataContext ld = new LinqDataContext(); |
17 | ViewData[ "model" ] = from i in ld.user |
18 | orderby i.datetime descending |
24 | public ActionResult About() |
4.修改对应的View页面代码,如下:
02 | ViewBag.Title = "Home Page"; |
04 | @foreach (var item in ViewData["model"] as IEnumerable< MvcApp.Models.user >) |
10 | < li >@item.datetime.ToString()</ li > |
注意,在遍历ViewData["model"]的时候,要让其实现IEnumerable的接口。
在表中添加两条示例数据后运行如图:

下面来介绍另一直比较dynamic的ViewBig。
HomeController:
01 | public ActionResult Index() |
03 | LinqDataContext ld = new LinqDataContext(); |
06 | ViewBag.model = from i in ld.user |
07 | orderby i.datetime descending |
View:
02 | ViewBag.Title = "Home Page"; |
04 | @foreach (var item in ViewBag.model) |
10 | < li >@item.datetime.ToString()</ li > |
是不是发现区别了呢?
小编Ps:ViewBag虽然比较简单, 但是由于ViewBag的动态特效,也导致它在VS中暂时不会有代码提示的功能。
其实还有一种传值TempData, 它和ViewData、ViewBag的区别是它可以在不同在页面中传值,并且只能实用一次,可以把它形容成一次性Session。用法和ViewData类,这里不在阐述。
下节我们来讲强类型传值,还请继续关注。