MVC如何进行前后台传值
1、使用viewdata2、viewbag3、TempData4、Model
1、使用viewdata
ViewData是一个很早就出来的,在mvc2的时候就用的很火热了,首先它是一个字典型的。就是使用的时候存值必须是
张三:1,李四:2
这种形式存值进去,在后台使用的时候:
public ActionResult Index()
{
List
ViewData["naxtab"] = ust;
return View();//返回页面
}
viewdata前台取值
@foreach (UserInfo item in ViewData["naxtab"] as List
{
}
从上面也是可以看到viewdata的一个麻烦之处,就是必须存什么类型进去,取值的时候就必须强转为什么类型,否则就会报错!
取出来的数据 这样就是viewdata的一个存取值的流程了,有没有觉得有点复杂? 所以下面就接着退出升级版viewbag了!
2、viewbag
先简单说说下viewbag是个什么东西,viewbag是从mvc3里面才开始引进使用,ViewBag 是动态类型(dynamic),因为具体跟viewdata不同的就是viewdata是键值对类型,在你使用的时候必须强转为类型或数组,但是viewbag是可以直接用的,就算是存入数组,那也是可以直接使用foreach循环打印出来的。 viewbag后台存值
//给viewbag赋值一个集合
public ActionResult Index()
{
string[] items = new string[] {"张三", "李四", "王二" };
ViewBag.Items = items;//将items集合的值存入viewbag里面
return View();//返回页面
}
viewbag前台接收值(数据类型用dynamic或var都可以)
- 我的viewbag数据: @p
@foreach (dynamic p in ViewBag.Items)
{
}
那么打印出来的数据就是 上面的方法是传集合时的用法,博主在学校学的时候一般是进行数据库输出数据,然后常用都是viewdata所以我就想试下用viewbag是否也可以,直接上后台
List
ViewBag.Items = ust;//将items集合的值存入viewbag里面
return View();//返回页面
前台(在这里因为后台返回的是键值对,所以下面的p要点你数据库的字段名)
- 我的viewdata数据: @p.LoginName
@foreach (dynamic p in ViewBag.Items)
{
}
数据 所以好像感觉并没有什么不一样的地方,反而是比viewdata的用法貌似更简单了。 为此博主专门百度了一下,viewdata是是一个字典型的(Dictionary)。然后viewbag是一个是动态类型(Dynamic),然后viewbag是viewdata后面出来的,可以说是一个升级版,就是在viewdata上加以改进出来的,但是不同的就在于viewdata虽然没有viewbag这么使用方便,但是它的可读性要比viewbag要好,因为就是在viewdata上后台进行转码才有了viewbag,多了一道工序所以影响到了它的可读性。
3、TempData
跟viewdata一样,他也是一个字典型的,存值的时候必须是键值对存入! 不同的是生命周期不一样,viewbag和viewdata的生命周期都只有当前页面的控制器(Controller)到页面(view),一旦发生跳转(Redirection),那么它们两个也就不复存在了,但是tempdata的数据是依然有效,最常见用法就是跨页面传值了!
因为tempdata与viewdata用法基本一样,所以这里就不重复写了
4、Model
Model在初学mvc的时候使用比较多,但是后来就觉得不是特别好用,因为一个控制器只能返回一个Model数据,在你一个页面需要返回页面2个以上的表的时候,Model传值也就废了。不过好处就在于,使用是最简单的,适合初学者! 后台
public ActionResult Index()
{
List
return View(ust);//返回页面
}
没错,就是如此简单,不用申明不用强转,直接return返回即可!! 前台(使用的时候需要在页面引用项目的Model)
@using webtwo.Models
@*webtwo是我的项目名*@
@foreach (var item in Model)
{
姓名:@Html.Encode(item.LoginName)
密码:@Html.Encode(item.LoginPwd)
}
就这样后台的数据就可以直接在前台展示,就是如此简单!!!
所以今天的科普就到这里了,以上就是mvc里面常用的4种前后台的传值方式!!!