постоянное хранение данных в RouteData.Values

#c# #asp.net-mvc

#c# #asp.net-mvc

Вопрос:

Я собираюсь сохранить некоторые ключи со значениями в RouteData.Values и передавать данные между контроллерами и представлениями,

 RouteData.Values.Add("MyKey", "MyValue");
  

Я буду использовать значение в _Layout для отображения значения во всех представлениях,
но, похоже, все ключи будут удалены, когда вы перейдете к другому контроллеру.

Есть ли возможность постоянно хранить некоторые ключи в RouteData.Value и запретить их удаление?

Если нет, то где я могу сохранить некоторые подобные данные и получить к ним доступ из представления?

Я не хочу использовать ViewBag или ViewData, потому что я не получаю к ним доступ из IRouteConstraint

Комментарии:

1. Вы могли бы использовать . СЕТЕВАЯ сессия, если хотите

2. Для этих заданий можно использовать класс BaseController . Все контроллеры используют этот BaseController, и вы можете определить все общие объекты в этом.

Ответ №1:

Для этих заданий можно использовать класс BaseController . Все контроллеры используют этот BaseController, и вы можете определить все общие объекты в этом.

Вот так:

 public class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        RouteData.Values.Add("MyKey", "MyValue");

        base.OnActionExecuting(filterContext);
    }
}
  

и другие контроллеры

 public class HomeController : BaseController 
{
    // get route data values 
}
  

Комментарии:

1. Отличное решение; можете ли вы сказать, в чем преимущество этого метода по сравнению с сеансами?? Спасибо

2. Вы можете инициализировать в нем другие общие данные. Эта логика аналогична с мастер-страницами для контроллеров. Кроме того, вы можете управлять своими пользовательскими данными, данными локализации, исключениями, Сообщениями для представлений и т. Д… Я имею в виду более управляемые контроллеры…

3. Проверьте ЭТО и ЭТО