Да, я бы сказал, что это вообще плохая практика. Несмотря на то, что словарный подход ViewData является быстрым и довольно простым в реализации, он может привести к опечаткам и ошибкам, которые не обнаруживаются во время компиляции. Альтернативой может быть использование шаблона ViewModel, который позволяет вам использовать строго типизированные классы для конкретного представления, в котором вам необходимо представить значения или содержимое внутри. В конечном итоге, вы получите безопасную проверку типов и времени компиляции вместе с intellisense.
Мой первый выбор - использовать модель представления. Если это не подходит, тогда можно просто использовать состояние сеанса.