2009-08-24 9 views
1

Ich baue eine Anwendung, die andere Systeme überwacht. Jetzt möchte ich eine Teilansicht implementieren, ein User Control namens "status". Diese Kontrolle soll Statusinformationen über die application.Like anzuzeigen:Übergeben Sie Daten an die Ansicht. Immer durch viewData?

Benutzer angemeldet,

Wie viele Systeme online,

Neueste Aktivität.

Diese Teilansicht soll in fast allen anderen Ansichten gerendert werden. Wie soll ich diese Information an die Ansicht weitergeben?

Ich will nicht

Wiewdata[“SystemsOnline”] = Helpers.CountSystemsOnline() 
Wiewdata[“SystemLatestActivity”] = ……………… 

in alle meine Handlungen schreiben.

Kann ich etwas wie Html.RenderPartial (../ Shared/Status) schreiben, das zu einer Aktion führt, die die Viewdata hinzufügt?

Oder soll ich direkt in der Ansicht über den Hepler auf die Informationen zugreifen?

Ich bemerkte, dass die default LogOnUserControl-Ansicht verwenden Sie Page.User.Identity.Name, um direkt auf diese Daten zuzugreifen.

Wann ist es in Ordnung, keine Daten über viewdata im Controller zu übergeben?

Antwort

2

Sie müssen die ViewData Klasse für diesen Zweck verwenden. Ich empfehle nicht erfinden Tricks stattdessen.

Aber Sie müssen nicht manuell übergeben die gleichen Daten von alle Aktion. Tun Sie es einfach in Ihrem Basis-Controller:

protected override void OnActionExecuted(ActionExecutedContext context) { 
    base.OnActionExecuted(context); 
    if (context.Result is ViewResult) { 
     // Pass the systems online to all views 
     ViewData[“SystemsOnline”] = Helpers.CountSystemsOnline(); 
    } 
} 

Nur ein paar Zeilen Code und Sie machen es überall verfügbar.

Verwandte Themen