zoukankan      html  css  js  c++  java
  • ASP.NET MVC3中的ViewBag动态性

    这些天在学习MVC3 ,因为在和我的mentor在开发一个公司内部的项目,所以就开始学习MVC,前些天学习Razor引擎的时候,看到国外的一篇文章介绍ViewBag的,就拿过来,原文请点击这里:ViewBag dynamic in ASP.NET MVC3

    在MVC 3中的有一个新的ViewBag 动态特性,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类。对于ViewBag是如此的强大,意味着你能动态的set/get  值,增加任何数量的的额外字段而不需要强类型的检测。

    为了看这些的不同(和不用viewbag的时候),我们来看看一下的实例:

    Eample:--using ViewBag

    Controller

    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();
     }
    

    View (ASPX View Engine)

    <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>
    

     Eample :-Using ViewBag

    Controller

    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(); 
    }
    

     你和上面的对比 你看见了不同吗?

    View (ASPX View Engine)

    <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>
    

    在上面的例子以内ViewBag是动态类型的,所以我没有必要把 ViewBag.ListColors 转换成如 List<string>这样子的形式。另一方面,这个ViewData["key"]是一个对方。

    如果你在你的Controller中使用ViewData["ListColors"]=Colors,那么你可以在View试图中通过ViewBag.ListColors来检索它们。

  • 相关阅读:
    Delphi使用Indy、ICS组件读取网页
    用SendNotifyMessage代替PostMessage避免消息丢失
    LuaPlus的编译和引用
    如何转换和输出超大整数(64位)
    jQuery 源码:封装 Event
    jQuery 源码:操作样式
    jQuery 源码:元素位置
    模拟ES5 Array.prototype.reduce
    as 和 is 运算符以及安全的类型强制转换
    计算机编程基础
  • 原文地址:https://www.cnblogs.com/damonlan/p/MVC3.html
Copyright © 2011-2022 走看看