2012-11-20 20 views
5

Arbeit schrieb ich eine partielle Methode wie folgt aus:ASP.NET MVC 4 Teilansicht nicht

public ActionResult _StatePartial() 
     { 
      ViewBag.MyData = new string[] { "110", "24500" }; 
      return View(); 
     } 

Und _StatePartial Blick in _Layout Seite machen:

@Html.Partial("_StatePartial") 

Dies ist mein Teilansicht Code:

@{ 
    string[] Data = (string[])ViewBag.MyData; 
} 
<div id="UserState"> 
     Reputation: @Html.ActionLink(Data[0], "Reputation", "Profile") | 
     Cash: @Html.ActionLink(Data[1], "Index", "FinancialAccount") 
</div> 

Aber wenn ich dieses Projekt ausführen, _ StatePartial Methode ruft nicht auf und ViewBag immer Null.

Beachten Sie, dass diese Parameter nicht mein Modellfeld sind und durch Aufrufen einer Webdienstmethode berechnet werden. aber ich setze diesen Wert in meiner Frage ständig fest.

Was kann ich dafür tun? Gibt es eine Idee, Parameter an die Teilansicht zu übergeben? Danke.

Antwort

9

Ihr Anruf:

@Html.Partial("_StatePartial") 

wird die Ansicht machen, aber es wird die Aktion nicht nennen. Sie würden dies nur verwenden, wenn Sie alle Ihre Ansichtsdaten in der Aktion der übergeordneten Seite erfasst haben. In Ihrem Fall müssen Sie folgendes verwenden:

@Html.Action("_StatePartial") 

Dies ruft die Aktion zuerst auf, um die Ansicht abzurufen und auszuführen.

+0

Thanks :) Es funktioniert. – Mojtaba

1

auch:

return View(); 

ist mit der Layoutansicht zurückzukehren. Sie benötigen:

return PartialView(); 

Und ich würde die Verwendung dieses empfehlen:

public ActionResult StatePartial() 
{ 
    ViewBag.MyData = new string[] { "110", "24500" }; 
    return View("_StatePartial"); 
} 

aber besser zu nutzen stark typisierte Modelle, nicht ViewBag