me canse de usar strings en Session, QueryString, Cache, AppSettings, Application, etc
Como saben en todo desarrollo web vamos a hacer uso de variables de tipo Session, Cache, o Application. Si enviamos variables por URL debemos recuperar con Request.QueryString, las variables. Si tenemos variables de aplicación debemos leer el AppSettings del web.config.
Hasta aquí no hay problema, por ejemplo, quieremos asignar una variable al objeto Session:
Session["CodArea"] = 5;
Si vamos a pasar variables por la URL debemos hacer:
Response.Redirect("~/mostrarnoticiasportag.aspx?" +
"CodArea=" + Session["CodArea"].ToString() +
"&TagNombre=" + ddlTags.SelectedValue,true);
Y si queremos recuperarlas tenemos que usar:
Request.QueryString["TagNombre"], o Request.QueryString["CodArea"]
No fuera problema, si sólo tenemos una página con usando ese nombre, pero que pasa si varias páginas hacen uso de ese nombre, que pasa si cambiamos el nombre de la variable por alguna razón?, tenemos que ir a todas las páginas y cambiar el nombre. Sólo de pensar eso, nació la idea de evitar ese hard code, y tener alguna manera de tener la lista de elementos en el IntellSense, siempre el dedo puede jugar una mala pasada y tipeamos mal el nombre en string, y mientras descubrimos el porque de nuestro problema, perdemos unos minutos, si tenemos muchas páginas, un error o cambio, los minutos pueden aumentar y ya se siente el efecto de estos cambios.
Lo que se me ocurrió fue usar clases de la siguiente manera:
public class NOTQuery
{
public static string CodArea
{
get { return "CodArea"; }
}
public static string TagNombre
{
get { return "TagNombre"; }
}
}
public class NOTSession
{
public static string CodArea
{
get { return "CodArea"; }
}
}
Y ahora nuestro código de envió, sería de la siguiente manera:
Response.Redirect("~/not_mostrarnoticiasportag.aspx?" +
NOTQuery.CodArea + "=" + Session[NOTSession.CodArea].ToString() +
"&" + NOTQuery.TagNombre + "=" + ddlTags.SelectedValue,true);
Ahora si, es difícil cometer un error al escribir el nombre, pero se ven unos casos *-), además que si quiero cambiar el nombre del parámetro sólo lo hago en la clase, y no en todas las páginas. Noten que estas variables se puede usar tanto para enviar, asignar, o recuperar.
Así también podemos hacer para Cache, Application, y AppSettings. Lo que se me estaba ocurriendo al redactar el post, es también crear una lista para las páginas aspx :), aunque que para estas, ya existe intellsense, el problema es con los cambios de nombres.
Saludos,
Post cruzado
3Dev Blogs