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来检索它们。

  • 相关阅读:
    C#设计模式之单例模式(Singleton Pattern)
    ASP.NET MVC Route之WebForm路由与源码分析(二)
    ASP.NET MVC Route之WebForm路由与源码分析(一)
    Autofac初探(一)
    Razor基础语法一
    ASP.NET MVC之视图传参到控制器的几种形式
    LINQ to SQL语句(2)Count/Sum/Min/Max/Avg操作符
    LINQ to SQL语句(1)Select查询的九种形式
    学习《深入理解C#》—— 泛型 (第三章3.1---3.2)
    学习《深入理解C#》—— 委托的构成、合并与删除和总结 (第二章1.1---1.4)
  • 原文地址:https://www.cnblogs.com/damonlan/p/MVC3.html
Copyright © 2011-2022 走看看