2016-04-08 5 views
2

I Variable in _layout.cshtml Seite wie folgt definiert:Teile Rasierer variabel mit anderen Webseiten ASP.Net MVC

@{ 
var username = "myusername"; 
var datetime = "mydatetime"; 
} 

aber diese Variablen können nur in _Layout Seite verwendet werden.

Wenn ich versuche @username in Index.cshtml Seite zu verwenden, gibt es zurück "Der Name 'Benutzername' existiert nicht im aktuellen Kontext".

Wie kann ich diese Variable global machen, um sie auf verschiedenen Seiten zu verwenden?

Danke.

+0

in Ihrem * _Layout * Änderung 'var username = "myusername"' auf 'ViewBag.username = "myusername";' gleiche mit 'datetime' .. dann in Ihrem * Index.cshtml * alles, was Sie müssen do ist '@ ViewBag.username' wo immer Sie wollen in –

+0

Das klingt wie ein XY Problem (http://meta.stackexchange.com/a/233676/163532) für mich. Was versucht ihr wirklich * zu erreichen, weil es wahrscheinlicher ist, dass es einen viel besseren Weg gibt. –

Antwort

3

Sie sollten den ViewBag für globale Variablen verwenden.

@{ 
    ViewBag.username = "myusername"; 
    ViewBag.datetime = "mydatetime"; 
} 

Rendern Sie die Werte an anderer Stelle mit dieser Syntax.

@ViewBag.username 
@ViewBag.datetime 
+1

Während das funktioniert, ist es eine extrem schlechte Idee, dass eine Ansicht sich auf eine Variable in einem Layout verlässt. Der ganze Sinn von Layouts ist, dass sie austauschbar sein sollten. –

+0

Sie haben Recht. Er sollte wirklich ein ViewModel verwenden, um die Werte festzulegen, aber ich beantwortete seine unmittelbare Frage. – DunningKrugerEffect