首页 > 技术文章 > MVC控制器和视图之间的传值(一、控制器向视图传值)

moshaochen 2021-11-25 23:51 原文

控制器往视图传递数据的四种方式: ViewBag ViewData   TempData  model

//动态类型 ViewBag  ViewData 存放一些不重要的数据

例如:

控制器代码:
public ActionResult Index()
        {
            //动态类型 存放一些不重要的数据
            ViewBag.Content = "这是控制器里面的内容";
            ViewBag.Name = "张三";
            ViewBag.Age = "18";
            ViewData["ZName"] = "李四";
            ViewData["Zage"] = "19";
            

            return View();
        }
视图代码:

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@ViewBag.Content @ViewBag.Name @ViewBag.Age

我叫: @ViewData["ZName"]  年龄: @ViewData["Zage"]

TempData传值:存放在服务器中 ,可以跨页面,一次性(页面刷新值消失)

拓展: 

TempData 和ViewBag区别:TempData可以跨页面 只能用一次刷新后消失 session有效时间20min

控制器:
TempData["Hello"] = "hello world";
视图:
@TempData["Hello"]

model传值:需要定义一个model类

例:

//在models里面定义一个student类 
 public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
//控制台写法:
using //引用类名
public ActionResult ShowData( )
        {

             return View(new Student()
            {

                Id = 1,
                Name = "张三",
                Age = 18

            }) ;
            
        }
//后台写法:

@model Test.Models.Student//引用类名

@Model.Id
@Model.Name
@Model.Age

 

推荐阅读