asp.net MVC从后端传递数据到前端的几种数据形式:ViewBag,ViewData,Model

版权声明: https://blog.csdn.net/niuge8905/article/details/82020107

参考:https://blog.csdn.net/xiaouncle/article/details/77825389

在以上文章的基础上做点相关补充。

1.ViewBag是一个动态字段,而ViewData是一个字典

首先看后台代码:

public ActionResult Test()
        {
            //字典
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("laowang","老王");
            dic.Add("laoli","老李");
            dic.Add("laozhang","老张");
            //数组
            int[] numbers = new int[3];
            numbers[0] = 1;
            numbers[1] = 2;
            numbers[2] = 3;
            //集合
            List<string> list = new List<string>();
            list.Add("aaa");
            list.Add("bbb");
            list.Add("ccc");
            //字段
            string user = "老赵";
            int age = 30;

            //ViewBag
            ViewBag.Dic = dic;
            ViewBag.Numbers = numbers;
            ViewBag.List = list;
            ViewBag.User = user;
            ViewBag.Age = age;

            //ViewData
            ViewData["Dic"] = dic;
            ViewData["Numbers"] = numbers;
            ViewData["List"] = list;
            ViewData["User"] = user;
            ViewData["Age"] = age;
            return View();
        }

然后看前台代码:


@{
    Layout = null;
}

<div>
    <!--ViewBag-->
    <text>@ViewBag.User</text>
    <br />
    <text>@ViewBag.Age</text>
    <br />
    @foreach (var dic in @ViewBag.Dic)
    {
        <br />
    <a>@dic.Key</a>
    <a>@dic.Value</a>
    }
    @foreach (var num in @ViewBag.Numbers)
    {
        <br />
        <a>@num</a>
    }
    @foreach (var item in @ViewBag.List)
    {
        <br />
        <a>@item</a>
    }

    <!--ViewData-->
    <br />
    <text>@ViewData["User"]</text>
    <br />
    <text>@ViewData["Age"]</text>
    <br />
    @foreach (var dic in @ViewData["Dic"] as Dictionary<string, string>)
    {
        <br />
        <a>@dic.Key</a>
        <a>@dic.Value</a>
    }
    @foreach (var num in @ViewData["Numbers"] as int[])
    {
        <br />
        <a>@num</a>
    }
    @foreach (var item in @ViewData["List"] as List<string>)
    {
        <br />
        <a>@item</a>
    }

</div>

看最后结果:

2.传递Model

ViewBag和ViewData传递的数据较少,在写WPF程序的时候经常会用到Model来传递数据。

后台代码(StudentModel类):

public class StudentModel
    {
        private string name;
        private string stuNumber;

        public string Name
        {
            get
            {
                return name;
            }

            set
            {
                name = value;
            }
        }

        public string StuNumber
        {
            get
            {
                return stuNumber;
            }

            set
            {
                stuNumber = value;
            }
        }
    }

control里的方法:

public ActionResult ModelTest()
        {
            var students = new List<StudentModel>();
            students.Add(new StudentModel() { Name="小王",StuNumber="001"});
            students.Add(new StudentModel() { Name = "小张", StuNumber = "002" });
            students.Add(new StudentModel() { Name = "小李", StuNumber = "003" });
            return View(students);
        }

前台的代码:

@using MVCTest001.Models;
@model IEnumerable<StudentModel>
<h2>ModelTest</h2>
@foreach(StudentModel stu in Model)
{
    <h3>@stu.Name</h3>
    <br />
    <h3>@stu.StuNumber</h3>
    <br />
}

这里用了using,是为了后面的代码实现智能感知。另外model需要说明它的数据类型。

猜你喜欢

转载自blog.csdn.net/niuge8905/article/details/82020107