2012-04-01 21 views
3

Ich habe gerade erst begonnen, eine Website mit ASP.NET - MVC 4 zu bauen, und ich versuche, meinen Kopf darüber, wie dies funktioniert.Controller für Teilansichten ASP.NET MVC

Es gibt einige Daten, die ich auf jeder Seite anzeigen möchte und habe verstanden, dass Partial Views dafür großartig sind.

Ist es möglich, einen Controller zu erstellen, der immer Daten für die Teilansicht liefert? Oder wie kann ich das lösen?

Antwort

8

Das nennt man eine Kinderaktion.

Anruf Html.Action(...).

+0

Wird das eine zusätzliche Anfrage generieren? – johan

+0

@johan: Nein. – SLaks

2

Sie können eine Controller-Aktion für die Teilansicht erstellen. Aber wenn Sie schauen, auf jeder Seite etwas, was für inlcluding, sollten Sie darüber nachdenken, fügte hinzu, dass auf Ihre _Layout.cshtml Seite

Sie können eine normale Aktion-Methode erstellen, die eine Teilansicht zurück wie diese

public ActionResult UserInfo() 
{ 
    UserViewModel objVm=GetUserInf(); 
    // do some stuff 

return View("PartialUserInfo",objVM); 

} 

Dies wird eine Ansicht mit dem Namen „PartialUserInfo“ in Ihrem Views/Users Ordner zurückzukehren (der Controller Name Benutzer Unter der Annahme. Wenn Sie eine Ansicht angeben möchten, die eine andere Position ist, dass Sie es erwähnen kann, wenn die Ansicht Methode aufrufen

returnView("Partial/UserInfo",objVm); 

Dadurch wird eine Ansicht namens "UserInfo" in Ihrem Ordner Views/Users/Partial zurückgegeben.

in Ihrer Teilansicht, können Sie das normale Layout deaktivieren, indem doint (falls Sie eine haben) diese

@model UserViewModel 
@{ 
    Layout=null; 
} 
0

Eine Möglichkeit ist es, ein Modell für die übergeordnete Ansicht haben (die alle partials Hosting) dass enthält die Modelle für die Teilansichten als Eigenschaften auf sein Modell

EX:

MainModel.ModelForPArtialView1 
MainModel.ModelForPArtialView2 
MainModel.ModelForPArtialView3 

diese Weise können Sie dies auf der übergeordneten Ansicht tun können

@Html.Partial("PartialView1",MainModel.ModelForPArtialView1) 
@Html.Partial("PartialView2",MainModel.ModelForPArtialView2) 
@Html.Partial("PartialView3",MainModel.ModelForPArtialView3) 
+0

Die Lösung hängt auch davon ab, ob sich der Inhalt zwischen Ansichten ändert oder nicht. Ist der Inhalt der Teilansicht in allen übergeordneten Ansichten identisch? – TGH

Verwandte Themen