Estoy tratando de construir una "microwebapp" muy, muy simple que sospecho que será de interés para algunos Stack Overflow'rs si alguna vez lo hago. Lo estoy alojando en mi sitio C# en profundidad, que es ASP.NET 3.5 de vainilla (es decir, no MVC).¿Cómo puedo tener más control en ASP.NET?
el flujo es muy simple:
- Si un usuario introduce la aplicación con una URL que no especifica todos los parámetros (o si alguno de ellos no son válidos) Quiero simplemente mostrar la entrada del usuario controles. (Hay sólo dos son.)
- Si un usuario introduce la aplicación con una URL que hace tienen todos los parámetros necesarios, quiero mostrar los resultados y los controles de entrada (para que puedan cambiar los parámetros)
Éstos son mis requisitos autoimpuestas (mezcla de diseño e implementación):
- Quiero que la sumisión a usar GET en lugar de POST, sobre todo por lo que los usuarios pueden marcar la página fácilmente.
- I no desea querer que la URL termine pareciendo tonta después del envío, con partes y fragmentos extraños en ella. Solo la URL principal y los parámetros reales, por favor.
- Idealmente me gustaría evitar la necesidad de 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, deseo poder establecer los valores predeterminados de los controles en los valores de los parámetros pasados, si ASP.NET no puede hacer esto automáticamente para mí (dentro de las otras restricciones).
- Estoy contento de hacer toda la validación de parámetros yo mismo, y no necesito mucho en el camino de los eventos del lado del servidor. Es muy fácil de configurar todo al cargar la página en lugar de asociar eventos a los botones etc.
La mayor parte de esto está bien, pero no he encontrado ninguna manera de completamente retirar el estado de vista y mantener el resto de la funcionalidad útil. Usando la publicación de this blog post he logrado evitar obtener valor real para viewstate, pero todavía termina como un parámetro en la URL, que se ve realmente feo.
Si lo hago un formulario HTML sin formato en lugar de un formulario ASP.NET (es decir, eliminar runat="server"
), entonces no obtengo ningún estado de visualización mágico, pero no puedo acceder a los controles mediante programación.
I podí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 de IHttpHandler
. Sin embargo, eso parece un poco bajo nivel.
Me doy cuenta de que mis problemas podrían resolverse relajando mis limitaciones (por ejemplo, usando POST y sin preocuparme por el parámetro excedente) o utilizando ASP.NET MVC, pero ¿son mis requisitos realmente irrazonables?
Quizás ASP.NET simplemente no escala abajo para 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? (Cue comenta 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 ...)
"Cue comentarios de cómo los poderosos están caídos" - todos ignoramos, solo de cosas diferentes. Recientemente comencé a participar aquí, pero admiro la pregunta más que todos los puntos. Obviamente, sigues pensando y aprendiendo. Felicitaciones a usted. – duffymo
No creo que alguna vez le preste atención a alguien que había dejado de aprender :) –
Verdad en el caso general. Muy cierto en informática. –