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