Estoy tratando de construir una "micro-aplicación web" muy, muy simple, que sospecho que será de interés para algunos desbordadores de pila si alguna vez lo consigo. Lo alojo en mi sitio C # en profundidad, que es ASP.NET 3.5 de vainilla (es decir, no MVC).
El flujo es muy simple:
- Si un usuario ingresa a la aplicación con una URL que no especifica todos los parámetros (o si alguno de ellos no es válido), solo quiero mostrar los controles de entrada del usuario. (Solo hay dos)
- Si un usuario introduce la aplicación con una URL que hace que todos los parámetros necesarios, quiero mostrar los resultados y los controles de entrada (para que puedan cambiar los parámetros)
Aquí están mis requisitos autoimpuestos (mezcla de diseño e implementación):
- Quiero que el envío use GET en lugar de POST, principalmente para que los usuarios puedan marcar la página fácilmente.
- Yo no quiero la URL para terminar parecer tonto después de la presentación, con trozos y piezas extrañas en él. Solo la URL principal y los parámetros reales, por favor.
- Idealmente, me gustaría evitar requerir JavaScript en absoluto. No hay una buena razón para ello en esta aplicación.
- Quiero poder acceder a los controles durante el tiempo de renderizado y establecer valores, etc. En particular, quiero poder establecer los valores predeterminados de los controles a los valores de parámetros pasados, si ASP.NET no puede hacer esto automáticamente para mí (dentro de las otras restricciones).
- Estoy feliz de hacer toda la validación de parámetros yo mismo, y no necesito mucho en cuanto a los eventos del lado del servidor. Es realmente simple configurar todo en la carga de la página en lugar de adjuntar eventos a botones, etc.
La mayor parte de esto está bien, pero no he encontrado ninguna forma de eliminar completamente el estado de vista y mantener el resto de la funcionalidad útil. Utilizando la publicación de esta publicación de blog , he logrado evitar obtener un valor real para el estado de vista, pero aún así termina como un parámetro en la URL, que se ve realmente feo.
Si lo convierto en un formulario HTML simple en lugar de un formulario ASP.NET (es decir, sacarlo runat="server"
), entonces no obtengo ningún estado de vista mágico, pero no puedo acceder a los controles mediante programación.
Yo podría hacer todo esto haciendo caso omiso de la mayoría de ASP.NET y la creación de un documento XML con LINQ to XML, y la implementación IHttpHandler
. Sin embargo, eso se siente un poco bajo.
Me doy cuenta de que mis problemas podrían resolverse relajando mis restricciones (por ejemplo, utilizando POST y sin importar el parámetro excedente) o utilizando ASP.NET MVC, pero ¿son realmente irrazonables mis requisitos?
¿Quizás ASP.NET simplemente no se reduce a este tipo de aplicación? Sin embargo, hay una alternativa muy probable: solo estoy siendo estúpido, y hay una manera perfectamente simple de hacerlo que simplemente no he encontrado.
¿Alguna idea, alguien? (Señales de cómo cayeron los poderosos, etc. Está bien, espero nunca haber afirmado ser un experto en ASP.NET, ya que la verdad es todo lo contrario ...)