Asp.net MVC中的ViewData與ViewBag的區別

來源:互聯網
上載者:User

在Asp.net MVC 3 web應用程式中,我們會用到ViewData與ViewBag,對比一下:

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>

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.