Estou tentando criar um "micro-webapp" muito, muito simples, que suspeito que seja do interesse de alguns Stack Overflow'rs, se eu conseguir fazê-lo. Estou hospedando-o no meu site C # in Depth, que é o ASP.NET 3.5 baunilha (ou seja, não o MVC).
O fluxo é muito simples:
- Se um usuário entrar no aplicativo com um URL que não especifique todos os parâmetros (ou se algum deles for inválido), quero exibir apenas os controles de entrada do usuário. (Existem apenas dois.)
- Se um usuário entra no aplicativo com um URL que faz ter todos os parâmetros necessários, eu quero mostrar os resultados e os controles de entrada (para que eles possam alterar os parâmetros)
Aqui estão meus requisitos auto-impostos (mistura de design e implementação):
- Quero que o envio use GET em vez de POST, principalmente para que os usuários possam marcar a página com facilidade.
- Eu não quero que o URL para acabar parecendo bobo após a apresentação, com pedaços estranhos e pedaços sobre ele. Apenas o URL principal e os parâmetros reais, por favor.
- Idealmente, eu gostaria de evitar a exigência de JavaScript. Não há uma boa razão para isso neste aplicativo.
- Quero poder acessar os controles durante o tempo de renderização e definir valores etc. Em particular, quero poder definir os valores padrão dos controles para os valores de parâmetro passados, se o ASP.NET não puder fazer isso automaticamente para mim (dentro das outras restrições).
- Fico feliz em fazer toda a validação de parâmetros e não preciso muito de eventos do lado do servidor. É realmente simples definir tudo no carregamento da página em vez de anexar eventos aos botões etc.
A maior parte disso está bem, mas não encontrei nenhuma maneira de remover completamente o viewstate e manter o restante da funcionalidade útil. Usando a postagem deste post do blog, eu consegui evitar obter qualquer valor real para o viewstate - mas ainda acaba sendo um parâmetro no URL, que parece realmente feio.
Se eu criar um formulário HTML simples em vez de um formulário ASP.NET (ou seja, remover runat="server"
), não receberei nenhuma viewstate mágica - mas não consigo acessar os controles programaticamente.
Eu poderia fazer tudo isso ignorando a maior parte do ASP.NET e criando um documento XML com LINQ to XML e implementando IHttpHandler
. Isso parece um pouco baixo, no entanto.
Percebo que meus problemas podem ser resolvidos relaxando minhas restrições (por exemplo, usando POST e não me importando com o parâmetro excedente) ou usando o ASP.NET MVC, mas meus requisitos são realmente irracionais?
Talvez o ASP.NET não se reduz a esse tipo de aplicativo? Existe uma alternativa muito provável: estou apenas sendo estúpido, e há uma maneira perfeitamente simples de fazer isso que simplesmente não encontrei.
Alguma idéia, alguém? (Sugira comentários sobre como os poderosos caíram, etc. Tudo bem - espero nunca ter afirmado ser um especialista em ASP.NET, pois a verdade é exatamente o oposto ...)