Można uzyskać dostęp do zmiennych statycznych w widok. Można to zrobić na trzy sposoby:
1) Zgodnie z sugestią Ant Pala, dołącz wyrażenie w widoku. Biorąc pod uwagę, że przestrzeń nazw klasy GlobalVariables
jest AppName.GlobalVariables
:
@using AppName.GlobalVariables
<html>
<div ><h1 style="color:@GlobalVariables.SystemColor">System Color</h1></div>
</html>
2) Innym sposobem jest bezpośrednio używać nazw w wierszu, w którym chcesz mieć dostęp do zmiennej:
<div ><h1 style="color:@AppName.GlobalVariables.SystemColor">System Color</h1></div>
3) Na koniec można dodać wymaganą przestrzeń nazw do pliku web.config w folderze Widoki:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.Optimization" />
<add namespace="AppName.GlobalVariables" />
</namespaces>
</pages>
</system.web.webPages.razor>
Jeśli chodzi o trzymanie zmiennej w modelu i przekazaniem go do Widok stamtąd ... rzeczywiście jest on zgodny z wzorca MVC i zapewnia oddzielenie obawy i wszystko, dobroci. Ale moim zdaniem w niektórych przypadkach "trzymanie się wzorca" zostaje doprowadzone do poziomu absurdu. W twoim przypadku chciałbym uzyskać dostęp do tej zmiennej z widoku.
Więc nie powinieneś z powodu dostosowania do wzoru MVC? czy to główny powód? – ChaoticLoki
O ile mi wiadomo, możesz * używać * zmiennych statycznych w widokach, o ile uwzględnisz przestrzeń nazw klasy za pomocą '@ using'. Ale nie powinieneś. –
W porządku, to ma sens, po prostu nie chciałem tworzyć modeli podglądu dla wszystkiego, nawet gdy nie przekazywałem widoku. Na przykład mam listę klientów, która właśnie przekazała listę modeli klientów. – ChaoticLoki