У меня есть URL-адреса fb, twitter и youtube в БД и около 30 других переменных уровня приложения.
в настоящее время я запрашиваю его в каждом действии bcz в шаблоне. У меня есть социальные ссылки в нижнем колонтитуле, если пропустить, это вызовет ошибку.
ViewBag.Contents = db.Contents.Where(s => s.status == 1).OrderBy(s => s.group).ThenBy(s => s.sort).ToList();
Я хочу, чтобы строка выше выполнялась для всех действий где-то в глобальном масштабе. Погуглил, многие люди предлагают вставить сеанс, но я думаю, что это не должно быть в переменных сеанса, так как его размер может быть длинным.
Все мои контроллеры унаследованы от Controller
как
открытый класс HomeController : Контроллер {}
пожалуйста помоги.
ОБНОВЛЕНИЕ Я создал конструктор в домашнем контроллере, как показано ниже.
public HomeController()
{
if (ViewBag.Contents == null)
{
ViewBag.Contents = db.Contents.Where(s => s.status == 1).OrderBy(s => s.sort).ToList();
}
}
это уменьшило вызов его в каждом действии, но все же я должен вводить одно и то же во всех контроллерах. Это нормально или нет? и как мы можем написать это глобально для всех контроллеров
ViewBag
и создайте метод контроллера[ChildActionOnly]
, который возвращает частичное представление вашего нижнего колонтитула на основеIEnumerable<Contents>
, а затем вы можете просто использовать@Html.Action(...)
, чтобы добавить это частичное представление в свой макет. - person   schedule 03.09.2018