eweb
eweb

Reputation: 37

MVC5 how to make db calls for a layout page

I have a MVC5 app that is using layout page to control the header and footer ect. The layout page has some sections that are database driven such as the nav bar. I am not sure of the best practice for where to make these calls is. I can think of 2 ways but neither are perfect

Method 1: Pass in data with the pages view model. Don't like this approach has my homepage controller should only be concerned with homepage content, not the layout. This would have to be repeated for each and every view.

Method 2: Ajax to WebAPI controller. Kinda leaning towards this, although I think this means losing stuff like @URL and @HTML which are being used to create links and render custom content.

EDIT: Though of another method Method 3: Load info into cache on Start. Since this is not info that changes often after initial setup and this code is displayed on every page, caching would be needed anyways.

Upvotes: 0

Views: 713

Answers (1)

ps2goat
ps2goat

Reputation: 8475

You should call a controller method from within the view. On your view:

@Html.Action("MyAction", "MyController")

Make sure this action can find everything it needs without having to have values passed in, and you're set. We do this in several projects via service location and/or dependency injection.

Upvotes: 4

Related Questions