Frage

Ich habe ein Hybrid ASP.NET WebForms / MVC-Projekt. In meiner Master-Seite, ich habe einen „Menü“ User Control und „Fußzeile“ User Control. Sowieso. Ich brauche ein paar Daten zu übergeben (2 Strings) zu meinen „Menü“ User Control auf meiner Master-Seite (die aktuellen Registerkarte in meiner Menü-Navigation auszuwählen, etc.) Meine Ansichten auf mein Datenmodell stark typisieren. Wie kann ich Daten von meinem Controller zu meinem Menü drücken oder zumindest erlauben den Zugriff auf meine Masterseite einige Daten vordefiniert in meinem Controller?

Hinweis: Ich verstehe dieser reinen ASP.NET MVC verletzt, aber wie ich schon sagte, ist es ein Hybrid-Projekt. Der Hauptzweck meiner Einführung in ASP.NET MVC in mein Projekt war nur mehr Kontrolle über meine UI für bestimmte Situationen zu haben.

War es hilfreich?

Lösung

Setzen Sie Ihre Saiten in die Viewdata Sammlung,

ViewData["MenuString1"] = "My First String";
ViewData["MenuString2"] = "My Second String";

und rufen sie in der Master-Seite wie folgt aus:

myMenu.Property1 = ViewData["MenuString1"].ToString();
myMenu.Property2 = ViewData["MenuString2"].ToString();

http://nerddinnerbook.s3.amazonaws.com/Part6.htm

Andere Tipps

Sie können die Viewdata zu teilen Daten zwischen dem Controller und Ansicht verwenden, die nicht im Modell ist. In der Steuerung etwas tun, wie ViewData["menu"] = myMenu; und dann in der Ansicht tun <%= ViewData["menu"] %>. Sie können Objekte passieren, aber Sie müssen die Viewdata [key] zurück zum Objekttyp im Blick werfen.

Eine andere Möglichkeit, dies zu tun ist, Ihre Menüs und andere nicht-Modell damit verbundenen Datenbedarf in einen separaten Controller setzen. Dann können Sie Render verwenden Sie die Aktion in Ihrer Navigationssteuerung aufzurufen, die das Menü erzeugt. Hack hat eine Blog-Post auf Render dass dies näher erläutert.

ich zuneigen mit Viewdata für temporäre Werte von der Steuerung wie Auswahllisten und eine Render für unabhängige Dinge wie die Haupt-Website-Navigation.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top