ASP.NET MVC-3 layout ViewBag Daten über alle untergeordneten Ansichten
Wir brauchen dynamische Daten an unsere layout-Datei, egal, was die untergeordnete Ansicht ist. Zum Beispiel haben wir einige user-spezifische Daten in der Kopfzeile des layout.
Wie können wir geben diese Daten in die layout-Ansicht ohne jede Aktion, die Sie angeben, unabhängig? Sollten wir die Verwendung einer benutzerdefinierten controller, oder gibt es eine bessere Lösung?
Wenn Sie mit IoC, hier ist ein blog schrieb ich vor nicht langer Zeit zeigt einen einzigartigen Ansatz: crazorsharp.blogspot.com/2011/03/...
InformationsquelleAutor Shane N | 2011-03-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Strategie, die ich benutze, ist ein Basis-Modell, aus dem alle meine Modelle ableiten. Ich benutze ein base-controller, obwohl Sie können auch einen globalen filter, und überschreiben OnActionExecuted. Wenn ich erkennen, eine Aktion, gibt ein ViewResult, und ich warf das Modell zu meinem base-view-Modell und die gemeinsame Eigenschaften auf das Modell aus der Basis-controller.
Die Wahl zwischen einer globalen filter und einen Basis-controller hängt von einer Vielzahl von Faktoren. Wenn es wirklich gilt für alle Maßnahmen, die Ergebnisse anzeigen), und Sie brauchen keine Injektion erhalten Zugriff auf Ressourcen, dann würde ich wahrscheinlich gehen mit dem filter. Wenn Sie brauchen, um Abhängigkeiten injiziert, oder Sie haben einige Controller, wo die Daten angewendet werden, und andere, wo wäre es nicht (sagen die Admin-controller), dann würde ich die Basis-controller-route. Sie müssen sich daran zu erinnern Ableitung vom controller, wenn Sie mit ihm zu gehen.
Könnten Sie auch das gleiche tun mit der ViewBag wenn Sie nicht möchten, dass die Ableitung aus einer gemeinsamen Ansicht-Modell. Ich mag die stark typisierte Modell, aber YMMV.
InformationsquelleAutor tvanfosson
Könnten Sie @Html.Aktion("ActionName", "ControllerName") in der _layout Datei.
Hier ist der Artikel dazu:
http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
InformationsquelleAutor EKOlog
Werfen Sie einen Blick auf das login-Steuerelemente, die standardmäßig in einer Razor-Projekt - diese teilweise auf den Zugriff auf die user-Daten - wahrscheinlich genau wie Sie möchte.
z.B. eine typische LogonPartial.cshtml enthalten kann:
InformationsquelleAutor Stuart
Glaube ich, der Kern Ihrer Anliegen am besten gedient werden durch die Verwendung von Abschnitten.
http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx
Können Sie festlegen, Abschnitte und dann aktualisieren Sie Sie mit
InformationsquelleAutor Michael Draper