Me gustaría que me dierais un ejemplo sobre como orientar a objetos código HTML con ASP
1 Respuesta
Respuesta de juancg
1
1
juancg, Lenguajes: ASP HTML/DHTML JavaScript Visual Basic C++ Java (no...
El ASP está 'algo' orientado a objetos, igual que el VB. Con "orientar a objetos código HTML" supongo que te refieres a encapsular dentro de una clase ASP código HTML (por ejemplo, un formulario), de modo que se puedan crear varias instancias con diferentes parámetros para después dar una salida al cliente. Esto es lo más que se puede hacer, ya que ni ASP ni VB permiten una herencia real, ni (por tanto) un polimorfismo real. Supón que queremos hacer un objeto que genere un formulario en ASP. Este sería un posible código muy simplificado, consistente en dos clases: '-------------------------------- ' Clase para cada elemento del form '-------------------------------- Class clFormElement Public Nombre,ClaseCSS,Valor,Imagen Private sTipo Private Const Tipos="|BUTTON|CHECKBOX|FILE|HIDDEN|IMAGE|PASSWORD|RADIO|RESET|SUBMIT|TEXT|" Public Property Get Tipo() Tipo=sTipo End Property Public Property Set Tipo(tTipo) tTipo=Ucase(tTipo) if instr(Tipos,"|"&tTipo&"|")>0 Then sTipo=tTipo else sTipo="TEXT" end if End Property Public Function GetHTML() dim ret if sType<>"TEXTAREA" then ret= "<input type='" & sType & "'" else ret ="<textarea " end if ret=ret & " name='" & nombre & "' class='" & ClaseCSS & "'" if Imagen<>"" then ret=ret & " src='" & Imagen & "'" end if if Valor<>"" and sType<>"TEXTAREA" then ret=ret&" value='" & Valor & "'" end if ret=ret & ">" if sType="TEXTAREA" then ret=ret & valor & "</textarea>" end if GetHTML=ret end Function End Class '------------------------- Class clForm Private sHTML,sMethod Public Nombre,ClaseCSS,Action,Elements Private Sub Class_Initialize() set Elements=Server.CreateObject("Scripting.Dictionary") sHTML="" sMethod="GET" End Sub Private Sub Class_Terminate() sElements.RemoveAll() set sElements=nothing End Sub Public Property Get Method() Method=sMethod end Property Public Property Set Method(tMethod) tMethod=UCase(tMethod) if tMethod="GET" or tMEthod="POST" then sMEthod=tMethod end if end Property Public Sub Add(tName,tType) Dim x x=new clFormElement() x.Nombre=tName x.Tipo=tType Elements.Add ucase(tName),x end Sub Public Sub GenForm() ' Crea el HTML, pero no lo muestra dim it,elem sHTML="" sHTML="<form name='" & Nombre & _ "' class='" & ClaseCSS & "' method='" & _ sMethod & "' action='" & saction & "'>" for each it in sElements set elem=sElements(it) sHTML=sHTML & elem.GetHTML() next sHTML=sHTML & "</form>" End Sub Public Sub WriteForm() if sHTML="" then GenForm() Response.Write sHTML end Sub End Class '---------------------- Bueno, esto lo he hecho 'al vuelo', así que posiblemente tenga algunos fallos. Ahora que hemos encapsulado el form, para usarlo: dim f set f=new clForm f.Add "titulo","text" f.add "autor","text" f.add "Aceptar","submit" f.WriteForm() set f=nothing Este ejemplo admite muchas amplicaciones y mejoras. Otro modo de aplicar este ejemplo es para generar tablas, o resultados de la búsqueda de un recordset... hay muchas maneras. Ahora bien, si lo único que quieres es reutilizar HTML, lo mejor es crear métodos: Sub Titulo() %> <title>Esto es un ejemplo</title> <% End Sub En fin, cualquier duda me la preguntas. Espero que mi respuesta se refiriera a lo que te has p