• 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>
  • 相关阅读:
    windows 共享文件夹 给 mac
    给mac配置adb 路径
    关于android 加载https网页的问题
    http tcp udp ip 间的关系
    手机服务器微架构设计和实现专题
    添加ssh key
    本人对于线程池的理解和实践
    使用Android Butterknife
    记一次失败的笔试(华为研发工程师-汽水瓶笔试题)
    简易坦克大战python版
  • 原文地址:https://www.cnblogs.com/liyuxin/p/3014849.html
Copyright © 2020-2023  润新知