2016-03-29 3 views
0

Wenn ich ViewBag und ViewData mit dem gleichen Schlüssel nur die letzte funktioniert.Der gleiche Schlüssel in der ViewBag und ViewData in mvc nur letzte Arbeit als beide

Ich verwende diesen Code:

Meine Aktion Teil

public ActionResult Index() 
{ 
    ViewBag.Name = "View Bag"; 
    ViewData["Name"] = "View Data"; 
    TempData["Name"] = "Temp Data"; 

    return View(); 
} 

Meine Ansicht Teil

<div class="jumbotron"> 
    <h1>ASP.NET</h1> 
    <p class="lead">@ViewBag.Name</p> 
    <p class="lead">@TempData["Name"]</p> 
    <p class="lead">@ViewData["Name"]</p> 
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p> 
</div> 

und Meine Ergebnisse zeigen auf UI

enter image description here

+0

'ViewBag' wird als' ViewData' hinzugefügt (es verwendet nur 'dynamic'). Was ist deine Frage? –

+0

Meine Frage ist, dass ViewBag und ViewData denselben Schlüssel verwenden, aber das gleiche Ergebnis wie das letzte. Warum sind die gleichen Ergebnisse? –

+1

Da 'ViewBag'-Werte zum' ViewDataDictionary' hinzugefügt werden, aber ein 'Dictionary', das eindeutige Schlüssel haben muss, überschreibt der zweite den ersten (wenn man sie tauscht, würde" View Bag "' zweimal angezeigt –

Antwort

3

ViewBag ist ein dynamischer Typ. Die interne Implementierung von ViewBag speichert Name in ViewData ["Name"] (Typ von ViewDataDictionary), so dass diese 2 austauschbar sind. ViewData ["Name"] und ViewBag.Name.

+0

Ich habe implementiert Ihr Konzept funktioniert ordnungsgemäß Ich habe nur ViewBag.Name deklarieren und beide ViewBag.Name und ViewData ["Name"] auf UI beide funktioniert –

Verwandte Themen