Sem estado significa que o HTTP não tem suporte para estados; por exemplo. você não pode armazenar se um usuário tiver feito login ou feito outra coisa.
A solução mais comum é usar sessões para superar esse problema. Isso significa que você precisa incluir um identificador de sessão em cada resposta ou solicitação. Isso é feito criando um cookie de sessão ou incluindo o identificador de sessão em todos os links.
O WebForms tenta tornar tudo transparente (usando o ViewState) enquanto o MVC força você a manipulá-lo manualmente.
No seu exemplo, você mencionou Buttons e TextBoxes. A maneira mais fácil de deixá-los manter seu estado é simplesmente parar de postar de volta a página inteira. O MVC obteve um excelente suporte para o ajax (através do jQuery) e eu sugiro que você use o ajax se você quer apenas fazer algo na página atual.