Это было бы прагматично только в том случае, если вы автоматизировали тестирование представлений с помощью Selenium или использовали какой-либо другой инструмент для проверки вывода HTML.
Если это так, то использование HTTPContext внутри ваших контроллеров, вероятно, очень плохая идея, потому что это только увеличит связь между действиями вашего контроллера и HTTPContext.
Чтобы получить максимальную тестируемость, вы, вероятно, захотите настроить фабрику контроллеров, которая может вставлять биты пользователя в ваш контроллер при вызове MVC. Таким образом, ваши методы действий остаются отделенными от HTTPContext, и вы получаете тестируемость.
Если вы не используете инструмент автоматического тестирования представлений, на самом деле не имеет значения, если вы вызываете информацию из HttpContext.User, если вы не выполняете много логики в своем представлении. Например, если (HttpContext.User.IsAuthenticated) или что-то. Если это так, вы можете просто вставить его в элемент управления и использовать RenderPartial или запекать логические биты в своих моделях представления.
Рекомендованный лучший метод для MVC - сохранять ваши Представления настолько глупыми, насколько это возможно. Тем не менее, я бы посоветовал не впадать в догматику по поводу MVC и паттернов, а что нет. Поскольку MVC не запекся в функциональности SubController, во многих областях нарушение шаблона MVC не только поощряется, но и не может быть нарушено иначе. (см. MVC 2 RenderAction, RenderPartial, MasterPages с элементами управления)