zoukankan      html  css  js  c++  java
  • MVC Controller向View传值(ViewData与ViewBag)

    一:ViewData

    控制器:

    public ActionResult Index()
    {
        List<Perpon> perponList = new Perpon().GetPerponList();
        ViewData["PerponList"] = perponList;
        ViewData["UserName"] = "管理员";
        return View("Perpon");
    }

    视图:

    @ViewData["UserName"]
    @{  foreach(Perpon item in ViewData["PerponList"] as List<Perpon>)
        {
            <p>姓名:@item.Name+年龄:@item.Age</p>
        }
    }

    二:ViewBag

    控制器:

    public ActionResult Index()
    {
        List<Perpon> perponList = new Perpon().GetPerponList();
        ViewBag.PerponList = perponList;
        ViewBag.UserName = "管理员";
        return View("Perpon");
    }

    视图:

    @ViewBag.UserName
    @{  foreach (Perpon item in ViewBag.PerponList as List<Perpon>)
        {
            <p>姓名:@item.Name+年龄:@item.Age</p>
        }
    }    

    三:对比

    ViewData与ViewBag的区别

    1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData["myName"]

    2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName

    3、ViewBag和ViewData只在当前Action中有效,等同于View

    4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData

    注意:

    1,只有当要访问的关键字是一个有效的C#标识符时,ViewBag 才起作用。 

    例如,如果在ViewData["Key With Spaces"]中存放一个值,那么就不能使用ViewBag访问。因为这样根本就无法通过编译。

    2,动态值不能作为一个参数传递给扩展方法。因为C#编译器为了选择正确的扩展方法,在编译时必须知道每一个参数的真正类型。如果其中任何一个参数是动态的,那么就不会通过编译。

    例如,这行代码就会编译失败:@Html.TextBox("name",ViewBag.Name)。要使这行代码通过编译有两种方法:第一是使用ViewData["Name"],第二是把ViewBag.Name值转换为一个具体的型:(string)ViewBag.Name 。

    四:总结

    对于传值方式这个话题,对于大家来说应该是有些老套,因为只要接触过项目的人都很了解,这是一个非常基础的知识,在这里列出来,主要的目的也不是说要告诉大家如何如何传值,如何如何操作,然后要求大家记下来等,而是要通过上面的知识,告诉大家其实知识并没有我们想的那么高深莫测,所有的知识即使我们没有听说过,但只要我们花一些时间去研究,去总结,那么一切困难都变得easy了!

  • 相关阅读:
    html页面模板布局内容的继承,block
    url分发
    显示年月,注册页面和后台数据交互,不涉及数据库
    static文件夹中文件引用方式,如html页面引用js
    pycharm写django之返回一个页面
    pycharm编写django第一步
    VUE清除keepalive页面缓存
    js设置html根节点的style字体【Vue动态调整全局字体大小】
    npm 依赖重新安装或更新版本
    antd 自定义表头slots.title不生效
  • 原文地址:https://www.cnblogs.com/gygtech/p/8623710.html
Copyright © 2011-2022 走看看