Razor code programmgesteuert ausblenden global-Menü posten?

Ich bin ein erfahrener .NET Programmierer, aber ich bin neu auf dieses ganze web-Programmierung Ding. Meine ASP.NET MVC-website verfügt über ein globales layout, enthält einige Inhalte (Menü links oben auf der Seite), die ich ausblenden möchten, unter Bedingungen, die erkannt werden dynamisch vom controller code.

Meine Neigung-die einfache Methode, die verwendet die Werkzeuge, die ich gelernt habe über so weit -- ist, Sie zu schieben ein Boolean HideGlobal Wert in der ViewBag, und setzen den globalen markup in _Layout.cshtml, die ich ausblenden möchten, die in einer @if (ViewBag.HideGlobal) {} - block.

Ich möchte nur wissen, ob dies der "richtige" Weg, es zu tun, oder gibt es einige Rasierer Magie, die ich mit sollte, aus Gründen, die noch nicht ersichtlich für mich?

  • Je nachdem, wie Sie bestimmen, zu zeigen, oder verstecken Sie die Artikel, die Sie möglicherweise festlegen möchten ViewData Objekt in einem action-filter (ausserhalb des Controllers).
  • Wenn Sie schieben Sie eine HideGlobal im Blick Tasche, die Sie tun müssen, so in jeder einzelnen Aktion.
  • das stimmt nicht, ein ActionFilter bedeutet, dass Sie es tun können, weltweit
  • Ich bezog mich auf Bob ' s Ansatz.
  • richtig, in diesem Fall ja
  • Nein, ich brauche nicht, es zu tun, in jeder Handlung. Ich kann schreiben: @wenn (ViewBag.HideMenu == null || !ViewBag.HideMenu) { <nav>...</nav> }
  • aber Sie müssen ViewBag.HideMenu bei jeder Aktion, wenn du gehst, es zu tun in einer Handlung.

Schreibe einen Kommentar