Seguint la sèrie de posts dedicats al desenvolupament d'aplicacions web, ara toca processar una petició de nou registre que arriba des del formulari web. Aquesta part del ASHX òbviament crida a la deserialització per obtenir els valors dels camps que arriben al "request" que es col·loquen en un Dictionary (és un objecte que té una estructura clau-valor, que faig servir per posar nom_camp_BBDD-valor_camp) i posteriorment es crida a l'INS de la classe derivada corresponent (derivada de la clsDades). Aquest mecanisme de deserialització fa que no importi el nombre de camps que hi ha al formulari, 5 o 50 ens costarà el mateix de programar. La llista de camps a deserialitzar la genera un programa a partir dels camps a la BBDD i amb un "checkbox" (casella de verificació? Que malament sona), deia que amb un "checkbox" es decideix si es deserialitza o no. De forma similar al Update també es pot posar aquí verificacions de negoci, o es pot afegir al Dictionary algo com la data de creació del registre... La diferència principal respecte l'update és que es recull el valor del clau primària (PK, primary key) que es genera i s'envia al formulari web. Un cop el formulari web rep aquest PK, el formulari passa de mode insert a mode update, ja que posteriors gravacions no crearan registres nous si no que actualitzaran el mateix registre tota l'estona. La plantilla que genera ASHXs crea aquest mètode "Insertar", com sempre el codi comentat:
private void Insertar()
{
Resp.ContentType = "plain/text";
Req.ContentEncoding = Encoding.GetEncoding("UTF-8");
try
{
clsClassificacio ClassificacioTA = new clsClassificacio(ConnStr);
Dictionary<string, string> Params = new Dictionary<string, string>(); ;
string Errors = ComprovacionsDadesUpdateInsert();
if (Errors == "")
{
decimal PK_Classificacio;
Params = ClassificacioTA.Deserialize(Req);
PK_Classificacio = ClassificacioTA.INS(Params);
Resp.Write(PK_Classificacio.ToString());
}
else
{
Resp.Write(Errors);
}
}
catch (Exception Err)
{
Resp.Write("ERROR: " + Err.Message);
}
}
|