Где я должен написать логику для получения меню из базы данных? - PullRequest
0 голосов
/ 20 ноября 2011

Я использую Asp.Net MVC 3.0 и у меня есть _layout.cshtml в папке Shared.Проблема в том, что я хочу создать меню в этом .cshtml, которое должно быть загружено из базы данных.Но, как я понимаю, _layout.cshtml не будет иметь никаких действий и т. Д., Где я могу написать логику, и я не хочу писать весь этот код в самом cshtml.Есть ли варианты написать логику для cshtml в общей папке?

Ответы [ 3 ]

1 голос
/ 20 ноября 2011

Эранга прав, но позвольте мне расширить его ответ, чтобы конкретно ответить на ваш вопрос.

Что вы можете сделать, это создать новый контроллер (например, «меню») и создать действие с именем default. Пусть это действие вернет представление, называя его как угодно. Теперь перейдите в общую папку и добавьте представление, используя только что указанное имя.

Теперь о крутой части. По умолчанию, инфраструктура MVC сначала будет искать путь контроллера / имя-имени, а в случае неудачи она будет смотреть на ваш путь общего / имени-представления, где находится только что созданное представление! Аккуратно, а? ; Р

Проверьте http://www.aspnetmvcninja.com/views/view-search-paths для получения дополнительной информации о путях поиска MVC.

1 голос
/ 20 ноября 2011

Вы можете настроить контроллер и представление для отображения меню и вызова его внутри _layout.cshtml.

@{ Html.RenderAction("Index", "Menus");  }
0 голосов
/ 20 ноября 2011

@ Eranga дала вам хороший старт в реализации запрошенной вами функции.Я думаю, что следующие две статьи также будут полезны:

Html.RenderAction и Html.Action:

http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx

Пример реализации Html.Action метод с кэшированием:

http://www.tugberkugurlu.com/archive/donut-hole-caching-in-asp-net-mvc-by-using-child-actions-and-outputcacheattribute

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...