Orientar a objetos código HTML

Me gustaría que me dierais un ejemplo sobre como orientar a objetos código HTML con ASP

1 Respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas