Я думаю, здесь может быть некоторая путаница. То, что действительно не имеет состояния, это протокол HTTP. ASP.NET WebForms - это технология, разработанная для того, чтобы попытаться создать инфраструктуру, которая «обходила» отсутствие HTTP-состояния без сохранения состояния, и создать инфраструктуру веб-приложений с сохранением состояния. Вот почему вы видите такие вещи в WebForms, как ViewState, который, по сути, переносит состояние приложения по каналу.
ASP.NET MVC пришел и принял другой подход. Он охватывает безгражданство HTTP. Вот почему в MVC нет ViewState.
Однако это не означает, что вы больше не взаимодействуете с объектами с состоянием. Клиентский компьютер (например, браузер) является приложением с состоянием, так же как сервер, на котором выполняется код на стороне сервера (в данном случае IIS или любой другой), также является состоянием.
Следовательно, все, что находится на стороне сервера, все еще находится в состоянии (например, Session, Application, Cache), и вы все равно можете их использовать. Кроме того, на стороне клиента также отслеживается состояние, поэтому сценарии на стороне клиента стали такими мощными в последние годы; люди, пытающиеся в полной мере использовать возможности браузера.