Despues de multiples infernales dias pegandome con la aplicacion de nuestro portal, estoy empezando ha hacer valiosisimos descubirmientos para realizar el laborioso desarrollo de pasar una de nuestras aplicaciones en obsoleto asp a aspx. Para rizar mas el rizo, vamos ha hacerlo con la .net Framework de MS, pero sin Visual Studio .Net... (ya sabeis lo caras que son las licencias)
Manos a la obra:
Yo para empezar he creido conveniente el hacerme clases con las funciones que tengo en ficheros incluidos en los asp. Por ejemplo tenemos una funciones para formatear fechas, para generar sentencias sql etc. Para que funcionen de forma similiar a asp con visual basic, hay que definir las funciones como Shared, esto hace que para hacer las llamadas a estas funciones no haga falta instanciar un objeto.
Primero vamos a hacer una libreria con las susodichas funciones, para ello necesitamos el notepad o un editor gratuito que os recomiendo
#Develop, muy util para no tener que estar compilando desde consola, aunque tambien os recomiendo el maravilloso
notepad de windows en cualquier caso la compilacion por comando es un tema que no nos atañe por el momento, si necesitais alguna ayuda al respecto no dudeis en postear.
Con el #Develop desarrollar una libreria es tan facil como abrir el programita, Ctrl+Shift+N, seleccionar VBNET/Libreria de Clase y ponerle nombre (HUtils).
Imports System.Web.HttpRequest
Namespace HUtils
Public Class Utils
Shared Public Function PrintRequestForm(ByVal pRequest As System.Web.HttpRequest) As String
Dim i As Integer
For i = 0 To pRequest.Form.Count - 1
PrintRequestForm &= "Request.Form(""" & pRequest.Form.GetKey(i) & """) = """ & pRequest.Form.Get(i) & """"
Next
End Function
End Class
End Namespace
Si compilamos no deberia darnos ningun error. Este código recoge un request.form se lo recorre e imprime los valores introducidos en la pagina que le llama.
Una vez compilado lo tenemos que meter en un directorio bin de nuestra aplicacion web, ojo, tiene que ser una aplicacion web y tiene que estar dentro de un directorio bin, si no es una aplicacion web, si es un directorio a pelo, o un alias, o lo copiamos ande nos salga de los webecillos, no funcionara. Para crear una aplicacion web a partir de una carpeta en nuestro iis, basta con pinchar con el boton derecho encima de la misma dentro del administrador de iis y selecionara propiedades, una vez dentro darle al boton de crear y listo.
Una vez copiada nuestr libreria en el directorio bin tenemos que probarla de alguna forma.
Vamos a crear una pagina html que se llame home.html con un formulario como esta :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Prueba </title>
</head>
<body>
<form action="Home.aspx" method="post">
<input type="Text" name="txtHola1" value="asd asd asd 1"><br>
<input type="Text" name="txtHola2" value="asd asd asd 2"><br>
<input type="Text" name="txtHola3" value="asd asd asd 3"><br>
<input type="Text" name="txtHola4" value="asd asd asd 4"><br>
<input type="Submit">
</form>
</body>
</html>
Y por otro lado, una pagina aspx (lo adivinas? si...) que se llame home.aspx
<%@ Page Language="vb" AutoEventWireup="false" %>
<%@ Import namespace="HUtils.Utils" %>
<html>
<head>
<TITLE>prueba puto net</TITLE>
</head>
<body>
<%Response.Write(PrintRequestForm(Request))%>
</body>
</html>
Para probar solo nos hace falta abrir el home.html desde un navegador y ejecutar a ver que tal.
Para tener en cuenta, ojito donde poneis las librerias, es posible que os aparedca un error del tipo : BC30451: Name 'Clase' is not declared . Esto es por el import que no te lo pilla bien, aseguraros que habeis puesto el namespace correctamente y la clase. si no quereis importar a nivel de la clase, podeis importar solamente el name space y luego llamar a la funcion de la forma clase.funcion().