2012-02-10 9 views
5

Soy muy nuevo en C# y .NET y me encuentro con un problema y no estoy seguro de en qué dirección debo dirigirme.Representación dinámica de páginas en ASPX

Mi empresa trabaja con un sistema de cumplimiento de suscripción de terceros para muchas funciones, incluidas la facturación y las renovaciones. Este sistema tiene la capacidad de enviar automáticamente un correo electrónico cuando se desencadenan ciertos eventos. Por ejemplo, cada suscripción se lleva a cabo, lo que llamamos, una serie de renovación. Esta serie consiste en varios esfuerzos repartidos a lo largo de la vida de la suscripción.

Cuando una suscripción califica para un cierto esfuerzo de esta serie, podemos generar un evento que hará que el sistema envíe una solicitud HTTP POST a un URI determinado con una carga útil XML. El punto final (una página .aspx) recibe la solicitud, la procesa y devuelve una respuesta con, en este caso, código HTML. Ese HTML luego es enviado por correo electrónico por el sistema de cumplimiento.

Tengo una aplicación web básica creada con algunas de estas páginas .aspx en funcionamiento. Cada página tiene un código .cs correspondiente detrás del archivo.

Aquí es donde realmente comienza mi pregunta. En nuestro sistema de cumplimiento, solo podemos definir un punto final por combinación de evento y producto. Por lo tanto, no importa en qué esfuerzo esté calificada una suscripción en ese momento, el evento en sí es el mismo. Sin embargo, lo que es diferente es el XML de la solicitud HTTP POST. Es en ese XML que puedo decir para qué esfuerzo se ha generado la solicitud. La razón por la que es importante es porque el HTML del correo electrónico correspondiente es diferente para cada esfuerzo. Para expresarlo de una manera ligeramente diferente, el HTML que se debe representar es diferente, de arriba a abajo, para el esfuerzo 1 que para el esfuerzo 2. El esfuerzo 2 es diferente del esfuerzo 3, y así sucesivamente.

Por lo tanto, lo que estoy tratando de averiguar es cómo "dirigir el tráfico". Dado que todas estas solicitudes llegarán a un único punto final, necesito devolver dinámicamente el HTML correcto para el esfuerzo correspondiente.

En una página .aspx diferente en esta misma aplicación, hay algunos contenidos que deben generarse dinámicamente según el contenido de la solicitud. En ese caso, utilicé dos controles PlaceHolder, uno para cada posible conjunto de texto. Luego, en el código subyacente, establezca su propiedad Visible en verdadero o falso según sea necesario.

Desestimé la idea de hacer eso en este caso desde el principio ya que hay cinco o seis plantillas HTML y rellenar todas ellas en una página sería complicado y difícil de mantener.

Aquí es donde estoy en el punto en que no sé qué hacer a continuación. Tengo la sensación de que un control de usuario o control personalizado será el camino a seguir. Pero, ¿la vieja redirección es una mejor opción? O ninguno de los anteriores?

Respuesta

4

La solución que descartó es muy similar a la correcta. Sin embargo, hay algo que puede hacer para simplificarlo y facilitar el mantenimiento.

Lo que queremos hacer aquí es crear un control personalizado o un control de usuario para cada esfuerzo. Esto le permitirá mantener el código para los esfuerzos por separado, sin mezclar todo en un solo lugar. Entonces, toda su página de punto final * .aspx consiste en un único control de marcador de posición. Al procesar una solicitud, su método Page_Load analizará su xml y descubrirá qué tipo de esfuerzo necesita. Luego creará una nueva instancia del control adecuado, lo agregará al marcador de posición y pasará el resto de los datos al control para finalizar el procesamiento.

Como hay algunos elementos en común entre todos los controles aquí (la capacidad de recibir un mensaje xml), primero puede querer crear también un control de base para que los controles de esfuerzo individuales hereden.

+0

bien ... estoy contigo. Parece que no puede ver el bosque por los árboles en este! Cuando estaba tratando de establecer la conexión entre lo que había hecho en esa otra página y esta, me quedé atrapado en mis únicas opciones para que un control PlaceHolder fuera visible o no visible. ¡Gracias! –

3

Por lo que entiendo, le gustaría tener un punto final único, pero aún así poder "enrutar" las solicitudes internamente. Esto es fácilmente posible.

Podría, por ejemplo, transferir solicitudes internamente, usando Server.Transfer. De esta forma, puede tener sus 5 o 6 plantillas HTML diferentes y luego enrutar las solicitudes entrantes a una plantilla correcta según el contenido de la solicitud.

+0

oh, está bien. Eso tiene sentido también. ¡Gracias! –

0

enter link description here

Aquí damos un ejemplo para la creación de una nueva página .aspx en tiempo de ejecución. También le damos la opción de dar el nombre de la página. El usuario puede dar lo que quiera. Al igual que los blogs de Google, hacemos una nueva página en tiempo de ejecución. La nueva página no está en el sitio web, esta página debe crearse en tiempo de ejecución y debe ser dinámica.

Cuestiones relacionadas