zoukankan      html  css  js  c++  java
  • Asp.net MVC中的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中查询数据时不需要类型转换
    有一些类型转换代码 可读性更好

    在Controller中使用ViewData:
    public ActionResult UsingViewData()
    {
        ViewData["Title"] = " Using ViewData";
        ViewData["ProjectName"] = "My Test Project";
        ViewData["ProjectDescription"] = "This is Test Project to demo Viewdata and viewbag details";
        ViewData["StartDate"] = new DateTime(201111);
        ViewData["TotalPrice"] = 1000;
        ViewData["TotalDays"] = 100;
        
        Dictionary<stringstring> stackholder = new Dictionary<stringstring>();
        stackholder.Add("Client","Mr.  Client");
        stackholder.Add("Manager","Mr. Joy");
        stackholder.Add("Team Leader","Mr.Toy");
        stackholder.Add("Sr. developer""Mr.dojoy");
        stackholder.Add("developer""Mr. nodoy");
        ViewData["stackholder"] = stackholder;

        List<string> modules = new List<string>();
        modules.Add("Admin module");
        modules.Add("ShoppingCart module");
        modules.Add("CMS module");
        ViewData["modules"] = modules;
        return View();

     对应UsingViewData View的cshtml:

    <h1>@ViewData["Title"]</h1>
     <div>
       <div>
        <h2>Project Name : @ViewData["ProjectName"]</h2>
       </div>
       <div>
         ProjectDescription :   
         <p>"@ViewData["ProjectDescription"]".</p>
       </div>
       <div>
          Stack Holder :
          <br />

          <ul id="stakholder">
          @foreach ( var stakerholder in ViewData["stackholder"as Dictionary<stringstring> )
          {          
            <li>
                @stakerholder.Key &nbsp; : @stakerholder.Value
            </li>
          }
         </ul>
       </div>
       <div>
         Project Details:<br />
         <div>
           module List  :
           <ul id="modulelist">
          @foreach ( var module in ViewData["modules"as List<string> )
          {          
            <li>
                @module
            </li>
          }
         </ul>
            
         </div>
         Project StartDate : @ViewData["StartDate"]  <br />
         Project TotalPrice: @ViewData["TotalPrice"] <br />
         Project TotaDays  : @ViewData["TotalDays"
       </div>
    </div> 
    然后是ViewBag:
    public ActionResult UsingViewBag()
    {
        ViewBag.Title = " Using ViewBag";
        ViewBag.ProjectName = "My Test Project";
        ViewBag.ProjectDescription = "This is Test Project to demo Viewdata and viewbag details";
        ViewBag.StartDate = new DateTime(201111);
        ViewBag.TotalPrice = 1000;
        ViewBag.TotalDays = 100;
        
        Dictionary<stringstring> stackholder = new Dictionary<stringstring>();
        stackholder.Add("Client""Mr.  Client");
        stackholder.Add("Manager""Mr. Joy");
        stackholder.Add("Team Leader""Mr.Toy");
        stackholder.Add("Sr. developer""Mr.dojoy");
        stackholder.Add("developer""Mr. nodoy");
        ViewBag.stackholder = stackholder;

        List<string> modules = new List<string>();
        modules.Add("Admin module");
        modules.Add("ShoppingCart module");
        modules.Add("CMS module");
        ViewBag.modules = modules;
        return View();
    }
    对应View UsingViewBag 的cshtml的ViewBag:
    <h1>@ViewBag.Title</h1>

    <div>
       <div>
        <h2>Project Name : @ViewBag.ProjectName</h2>
       </div>
       <div>
         ProjectDescription :   
         <p>"@ViewBag.ProjectDescription.</p>
       </div>
       <div>
          Stack Holder :
          <br />

          <ul id="stakholder">
          @foreach ( var stakerholder in ViewBag.stackholder )
          {          
            <li>
                @stakerholder.Key &nbsp; : @stakerholder.Value
            </li>
          }
         </ul>
       </div>
       <div>
         Project Details:<br />
         <div>
           module List  :
           <ul id="modulelist">
          @foreach (var module in ViewBag.modules )
          {          
            <li>
                @module
            </li>
          }
         </ul>
            
         </div>
         Project StartDate : @ViewBag.StartDate.ToString("dd-MMM-yyyy") <br />
         Project TotalPrice: @ViewBag.TotalPrice  ?  <br />
         Project TotaDays  : @ViewBag.TotalDays 
       </div>
     </div>

    转自:http://www.cnblogs.com/Gnepner/archive/2012/05/05/2484545.html
  • 相关阅读:
    LDAP概念及原理
    基于Kerberos+Ldap复合认证的大数据权限
    架构师需要知道的20个英文缩写
    Alluxio集群搭建并整合CDH(MR/Hive/Spark)
    编译Alluxio源码适配CDH5.16.1
    Hive全库数据迁移方案
    基于LDAP认证的大数据权限解决方案
    基于Kerberos认证的大数据权限解决方案
    普通用户fork问题 fork: retry: No child processes
    (二)数据预处理
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/2816533.html
Copyright © 2011-2022 走看看