Если ваш UserControl появляется на каждой странице, то одним из способов решения этой проблемы будет использование базового контроллера, из которого все ваши контроллеры получают и генерируют ViewData для UserControl, переопределяя метод OnActionExecuting и помещая туда логику. Если ваш UserControl менее распространен, но все еще часто используется по всему сайту, вы можете расширить ActionFilterAttribute и сделать так, чтобы ваш фильтр генерировал необходимые данные. Этот атрибут можно использовать для украшения контроллеров или действий, которые генерируют представления, использующие UserControl.
Во всем этом я предполагаю, что данные для UserControl не зависят от вызываемого действия. Если есть зависимость, то, вероятно, лучше поместить логику в класс (или классы, возможно, с использованием стратегии) и сделать генерацию данных явной в каждом действии или контроллере (через переопределение OnActionExecuting).