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