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