366 Stimmen

Was ist der Unterschied zwischen ViewData und ViewBag?

Ich sah die ViewBag in MVC 3. Was ist der Unterschied zu ViewData in MVC 2?

0voto

dilipkumar1007 Punkte 153
public ActionResult Index()
{
    ViewBag.Name = "Monjurul Habib";
    return View();
}

public ActionResult Index()
{
    ViewData["Name"] = "Monjurul Habib";
    return View();
} 

In View:

@ViewBag.Name 
@ViewData["Name"]

0voto

user3141962 Punkte 9

Auf diese Weise können wir die Werte verwenden, um die Informationen zwischen dem Controller und einer anderen Seite mit TEMP DATA weiterzugeben

0voto

Bhanu Pratap Punkte 1415

Ein wesentlicher Unterschied zwischen ViewData und ViewBag ist mir aufgefallen:

ViewData: es wird Objekt zurückgeben, egal was Sie in diese zugewiesen haben und müssen typecast wieder zurück auf den ursprünglichen Typ.

ViewBag: es ist genug intelligent, um genaue Art zurückgeben, was Sie zu ihm zugewiesen haben es spielt keine Rolle, ob Sie einfachen Typ (dh int, String etc.) oder komplexen Typ zugewiesen haben.

Beispiel: Controller-Code.

 namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            Products p1 = new Products();
            p1.productId = 101;
            p1.productName = "Phone";
            Products p2 = new Products();
            p2.productId = 102;
            p2.productName = "laptop";

            List<Products> products = new List<Products>();
            products.Add(p1);
            products.Add(p2);
            ViewBag.Countries = products;
            return View();
        }
    }
    public class Products
    {
        public int productId { get; set; }
        public string productName { get; set; }
    }
}

Code anzeigen.

<ul>
            @foreach (WebApplication1.Controllers.Products item in ViewBag.Countries)
            {
            <li>@item.productId &nbsp;&nbsp;&nbsp;@item.productName</li>
            }
        </ul>

Bildschirm ausgeben.

enter image description here

0voto

AnsichtDaten

  1. ViewData wird verwendet, um Daten vom Controller an den View zu übergeben
  2. Sie ist abgeleitet von der ViewDataDictionary-Klasse
  3. Sie ist nur für die aktuelle Anfrage verfügbar
  4. Erfordert Typecasting für komplexe Datentypen und prüft auf Nullwerte, um Fehler zu vermeiden
  5. Wenn eine Umleitung erfolgt, wird ihr Wert zu Null.

ViewBag

  1. ViewBag wird auch verwendet, um Daten vom Controller an den jeweiligen View zu übergeben
  2. ViewBag ist eine dynamische Eigenschaft, die die Vorteile der neuen dynamischen Funktionen in C# 4.0 nutzt
  3. Sie ist auch nur für die aktuelle Anfrage verfügbar
  4. Wenn eine Umleitung erfolgt, wird ihr Wert zu Null.
  5. Erfordert kein Typecasting für komplexe Datentypen

0voto

Brijesh Mavani Punkte 980

Hier AnsichtDaten y ViewBag beide werden verwendet, um Daten von Controller a Siehe .

1. AnsichtDaten

-- ViewData ist ein Wörterbuchobjekt, das abgeleitet ist von ViewDataDictonary Klasse.

-- Daten erlauben nur eine Anfrage, ViewData-Werte werden gelöscht, wenn eine Seitenumleitung erfolgt.

-- Der Wert von ViewData muss vor der Verwendung kateingetippt werden.

Ejemplo: In Controller

public ActionResult PassingDatatoViewWithViewData()
{
      ViewData["Message"] = "This message shown in view with the ViewData";
      return View();
}

In Ansicht

@ViewData["Message"];

-- Mit ViewData ist ein Paar wie Schlüssel y Wert Nachricht ist der Schlüssel und der Wert in Anführungszeichen ist der Wert.

-- Daten sind einfach, so können wir nicht verwenden typecasting hier, wenn Daten komplex ist dann mit Typ Casting.

public ActionResult PassingDatatoViewWithViewData()
{
      var type= new List<string>
    {
        "MVC",
        "MVP",
        "MVVC"
    };
    ViewData["types"] = type;
    return View();
}

-- In View können Daten extrahiert werden als

<ul>
        @foreach (var items in (List<string>)ViewData["types"])
        {
         <li>@items</li>
        }
  </ul>

2. ViewBag

--ViewBag verwendet den dynamischen Feature.ViewBag Wrapper um die ViewData.

-- In ViewBag ist ein Typ-Casting erforderlich.

-- Wie ViewData, bei Umleitung wird der Wert Null.

Ejemplo:

public ActionResult PassingDatatoViewWithViewBag()
{
          ViewData.Message = "This message shown in view with the ViewBag";
          return View();
}

In Ansicht

@ViewBag.vbMessage

--Für den Typ Complex verwenden Sie ViewBag

public ActionResult PassingDatatoViewWithViewBag()
{
          var type= new List<string>
        {
            "MVC",
            "MVP",
            "MVVC"
        };
        ViewBag.types = type;
        return View();
 }

-- In View können Daten extrahiert werden als

<ul>
       @foreach (var items in ViewBag.types)
       {
         <li>@items</li>
       }
</ul>

-- der Hauptunterschied besteht darin, dass ViewBag keine Typisierung erforderlich, sondern AnsichtDaten ist das erforderliche Typecasting.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X