2016-06-23 21 views
0

Ich bin neu in ASP.NET Core MVC und ich erzeuge ein Menü aus der Datenbank.Navigationsmenü aus der Datenbank

Ich schaffte es zu arbeiten, aber ich habe ein Problem: Es funktioniert nur, wenn die Aktion Index ist, weil die Datenbankfunktion in IActionResult Index() Methode ist.

Wie kann ich dieses Problem beheben? Meine Navigationsansicht in der _layout.chtml.

Wie kann ich die Funktion vor dem Rendern des Layouts aufrufen? Wird dies Auswirkungen auf die Leistung haben, weil die Datenbank jedes Mal abgefragt wird?

+0

Sie könnten eine ViewComponent http://www.mikesdotnetting.com/article/294/view-components-in-asp-net-core-mvc –

+0

@AlexandrePires Dank verwenden. Es war einfach. hahahah. Danke, Alter, aber ich kann Ihren Kommentar nicht als Antworten markieren. Und wird es einen Leistungseinbruch geben? – user3717030

+0

Bitte verwenden Sie keine MVC6-Tags mehr. Es ist für eine zukünftige Version von ASP.NET MVC basierend auf dem alten Webstack (MVC5). ASP.NET Core ist eine komplett neue und inkompatible, portable Version, die auf .NET Core basiert. Verwenden Sie stattdessen [tag: asp.net-core-mvc] und/oder [tag: asp.net-core] Tags und Ihre Frage wird eher von Leuten gefunden, die Ihnen bei dem Problem helfen können – Tseng

Antwort

2

Sie könnten versuchen, eine ViewComponent zu erstellen (siehe).

Sie würden es einfach in _Layout.cshtml aufrufen.

+0

wird es eine Leistung geben Treffer, weil jedes Mal, wenn das Layout gerendert wurde, die Datenbank abgefragt wird. – user3717030

+0

Sie könnten einen IMemoryCache innerhalb der View-Komponente verwenden (injizieren), wenn die Navigation dies nicht oft ändert. Auf diese Weise können Sie die Häufigkeit reduzieren, mit der die Datenbank aufgerufen wird. –