• 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>
  • 相关阅读:
    C#中Bitmap类实现对图像操作的一些方法
    C# GDI+ 文字操作
    C#中使用GDI+实现复杂打印
    【Python基础】json.dumps()和json.loads()、json.dump()和json.load()的区分
    【Python爬虫】selenium基础用法
    【Python爬虫】PyQuery解析库
    【Python爬虫】BeautifulSoup 解析库
    【Python爬虫】正则表达式与re模块
    【Python爬虫】Requests库的基本使用
    【Python基础】*args,**args的详细用法
  • 原文地址:https://www.cnblogs.com/liyuxin/p/3014849.html
Copyright © 2020-2023  润新知