Это старый вопрос, поэтому для удобства будущих посетителей это можно сделать путем создания basecontroller, унаследованного от Controller, и обработки OnActionExecuted () для добавления пользовательских пользовательских экземпляров в представление между действием контроллера и представлением. Вот полная реализация этого здесь: http://blog.bitdiff.com/2012/05/sharing-common-view-model-data-in.html
Если вы хотите, чтобы эти данные были доступны для вашего метода действия, все немного усложняется, так как представление еще не существует.
Для методов POST "baseView = filterContext.Controller.ViewData.Model as BaseView" предоставит вам доступ к представлению, но вам понадобится настраиваемое связующее для модели для установки ViewData.Model (см. https://stackoverflow.com/a/25250058/2381157). К сожалению, это не так не является глобальным решением, так как связыватель моделей не вызывается, если нет ничего связывающего.
Один подход, который может подойти, - это ActionFilter или AttributeFilter, который вставляет значение в RouteData или ActionParameters, но ваше действие должно будет передать это значение в представление.
Я не смог найти простой и понятный способ внедрить эти данные в представление при его создании и отступил от реализации поточно-ориентированного кэша пользовательских экземпляров, чтобы я мог извлекать пользовательский экземпляр всякий раз, когда это было необходимо, без накладные расходы на запрос к базе данных. Это было непросто, но у него были и другие преимущества для сохранения пользовательского состояния кросс-запроса (именно поэтому обычно вы хотели бы иметь пользовательские данные, доступные для логики контроллера).