MVC中數據傳遞 ViewBag的使用


ViewBag

MVC3中 ViewBag、ViewData和TempData的使用和差別

在MVC3開始。視圖數據能夠通過ViewBag屬性訪問。在MVC2中則是使用ViewData。MVC3中保留了ViewData的使用。ViewBag 是動態類型(dynamic),ViewData 是一個字典型的(Dictionary)。

ViewBag和ViewData的差別:
ViewBag 不再是字典的鍵值對結構。而是 dynamic 動態類型。它會在程序執行的時候動態解析。

所以在視圖中獲取它的數據時候不須要進行類型轉換

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中查詢數據時不須要類型轉換
有一些類型轉換代碼 可讀性更好

Contorller

<pre class="csharp" name="code">using NewOjbect.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace NewOjbect.Controllers
{
    public class HomeController : Controller
    {      
        public ActionResult Index()
        {
            ViewBag.UserName = "無鹽海";
            ViewBag.Age = "25";
            ViewBag.Gender = 1;

            string[] Itmes = new string[] { "中國", "美國", "德國" };
            ViewBag.itemsA = Itmes;// viewbag是一個新的dynamic類型keyword的封裝器 //ViewData["Items"] = items;
			
            return View();                 
        }
    }
}

 
        

View

<pre class="html" name="code"><html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test2</title>
</head>
<body>
    <div>
        username:<input type="text" id="UserName" name="UserName" value="@ViewBag.UserName" /></br>

        年  齡: <input type="text" id="age" name="age" value=@ViewBag.Age /></br>

        性  別:<input type="text" id="Gender" name="Gender" value="@ViewBag.Gender" /></br>

        <button>提交</button>

        <!---這里輸出國家名-->>
        @foreach (dynamic item in ViewBag.itemsA)
        {
            <p>@item</p>
        }
    </div>
</body>
</html>

 
         
        




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM