MVC常用4种前后台传值方法

MVC常用4种前后台传值方法

MVC如何进行前后台传值

1、使用viewdata2、viewbag3、TempData4、Model

1、使用viewdata

ViewData是一个很早就出来的,在mvc2的时候就用的很火热了,首先它是一个字典型的。就是使用的时候存值必须是

张三:1,李四:2

这种形式存值进去,在后台使用的时候:

public ActionResult Index()

{

List ust = db.UserInfo.ToList();

ViewData["naxtab"] = ust;

return View();//返回页面

}

viewdata前台取值

@foreach (UserInfo item in ViewData["naxtab"] as List)

{

@Html.Encode(item.LoginName)

@Html.Encode(item.LoginPwd)

}

从上面也是可以看到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都可以)

    @foreach (dynamic p in ViewBag.Items)

    {

  • 我的viewbag数据: @p
  • }

那么打印出来的数据就是 上面的方法是传集合时的用法,博主在学校学的时候一般是进行数据库输出数据,然后常用都是viewdata所以我就想试下用viewbag是否也可以,直接上后台

List ust = db.UserInfo.ToList();//使用ef框架取得用户表的值

ViewBag.Items = ust;//将items集合的值存入viewbag里面

return View();//返回页面

前台(在这里因为后台返回的是键值对,所以下面的p要点你数据库的字段名)

    @foreach (dynamic p in ViewBag.Items)

    {

  • 我的viewdata数据: @p.LoginName
  • }

数据 所以好像感觉并没有什么不一样的地方,反而是比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 ust = db.UserInfo.ToList();

return View(ust);//返回页面

}

没错,就是如此简单,不用申明不用强转,直接return返回即可!! 前台(使用的时候需要在页面引用项目的Model)

@using webtwo.Models

@*webtwo是我的项目名*@

@foreach (var item in Model)

{

姓名:@Html.Encode(item.LoginName)

密码:@Html.Encode(item.LoginPwd)

}

就这样后台的数据就可以直接在前台展示,就是如此简单!!!

所以今天的科普就到这里了,以上就是mvc里面常用的4种前后台的传值方式!!!

相关推荐

拼多多的付款方式:選項與功能 ▷➡️
365bet中文官网

拼多多的付款方式:選項與功能 ▷➡️

📅 07-27 👁️ 2605
霑被的意思
365游戏

霑被的意思

📅 07-27 👁️ 6681
五笔输入法哪个软件最好用-3DM软件
365游戏

五笔输入法哪个软件最好用-3DM软件

📅 07-22 👁️ 9041