zoukankan      html  css  js  c++  java
  • Asp.net MVC中的ViewData与ViewBag的区别

    在Asp.net MVC 3 web应用程序中,我们会用到ViewDataViewBag,对比一下:

    ViewData ViewBag
    它是Key/Value字典集合 它是dynamic类型对像
    从Asp.net MVC 1 就有了 ASP.NET MVC3 才有
    基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework
    ViewData比ViewBag快 ViewBag比ViewData慢
    在ViewPage中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换
    有一些类型转换代码 可读性更好

     

     

     

     

     

     

     

    ViewBag属性:

    public dynamic ViewBag {
        get {
            if (_dynamicViewData == null) {
                _dynamicViewData = new DynamicViewDataDictionary(() => ViewData);
            }
            return _dynamicViewData;
        }
    }

    ViewData属性:

    public ViewDataDictionary ViewData {
        get {
            if (_viewData == null) {
                SetViewData(new ViewDataDictionary());
            }
            return _viewData;
        }
        set {
            SetViewData(value);
        }
    }

    具体实例如下:

    在Controller中使用ViewData:

    public ActionResult Index(){    
      List<string> colors = new List<string>();     
      colors.Add("red");     
      colors.Add("green");     
      colors.Add("blue");                 
      ViewData["listColors"] = colors;     
      ViewData["dateNow"] = DateTime.Now;     
      ViewData["name"] = "Hajan";     
      ViewData["age"] = 25;     
      return View();
    }

    ViewData对应的index.cshtml页面:

    <p>    
      My name is
    <b><%: ViewData["name"] %></b>, <b><%: ViewData["age"] %></b> years old. <br /> I like the following colors: </p> <ul id="colors"> <% foreach (var color in ViewData["listColors"] as List<string>){ %>
        <li>
          <font color="<%: color %>"><%: color %></font>
        </li>
     <% } %>
    </ul>
    <p> <%: ViewData["dateNow"] %> </p>

    在Controller中使用ViewBug:

    public ActionResult Index(){    
        List<string> colors = new List<string>();            
        colors.Add("red");    
        colors.Add("green");    
        colors.Add("blue");    
        ViewBag.ListColors = colors; //colors is List        
        ViewBag.DateNow = DateTime.Now;    
        ViewBag.Name = "Hajan";    
        ViewBag.Age = 25;   
        return View(); 
    } 

    ViewBug对应的index.cshtml页面:

    <p>    
        My name is     
        <b><%: ViewBag.Name %></b>,     
        <b><%: ViewBag.Age %></b> years old.    
        <br />        
        I like the following colors:
    </p>
    <ul id="colors">
    <% foreach (var color in ViewBag.ListColors) { %> <li>   <font color="<%: color %>"><%: color %></font>
      </li>
    <% } %>
    </ul>
    <p> <%: ViewBag.DateNow %> </p>
  • 相关阅读:
    redis集群学习
    Java -cp 命令行引用多个jar包的简单写法(Windows、Linux
    内部类的继承
    NIO的epoll空轮询bug
    linux下socket的连接队列的 backlog的分析
    jQuery animate动画 stop()方法详解~
    jQuery插件之Cookie插件使用方法~
    jQuery中 pageX,clientX,offsetX,layerX的区别
    JavaScript 中一些概念理解 :clientX、clientY、offsetX、offsetY、screenX、screenY
    jQuery $.fn 方法扩展~
  • 原文地址:https://www.cnblogs.com/liyuxin/p/3014849.html
Copyright © 2011-2022 走看看