jueves, 13 de septiembre de 2012

Problema de serialización entre Entity y Jquery AJAX

Cuando utilizamos objetos muy complejos generados por EntityFramework (Con Foreign Key) y demás nos da un error de serialización.

Por Ejemplo:


[HttpPost]
public JsonResult ObtenerLocalidad(int id)
{
  return Json(db.Departamentos.Where(x => x.idProvincia == id).ToList(), JsonRequestBehavior.AllowGet);          
}


Donde el modelo departamento tiene una propiedad de tipo provincia, para solucionar esto lo que debemos hacer es un Linq y seleccionar solo los campos que requerimos de la siguiente forma:

[HttpPost]
public JsonResult ObtenerLocalidad(int id)
{
   var records = from entity in db.Departamentos.Where(x => x.idProvincia == id)
                 select new
                 {
                   Id = entity.Id,
                   Nombre = entity.Nombre
                 };

return Json(records, JsonRequestBehavior.AllowGet);
}

miércoles, 12 de septiembre de 2012

Encriptar y Desencriptar en C#

Clase para encriptar y desencriptar cadena de texto

public class Encrypt
    {
        string key = "ABCDEFG54669525PQRSTUVWXYZabcdef852846opqrstuvwxyz";

        public string EncryptKey(string cadena)
        {
            //arreglo de bytes donde guardaremos la llave
            byte[] keyArray;
            //arreglo de bytes donde guardaremos el texto
            //que vamos a encriptar
            byte[] Arreglo_a_Cifrar =
            UTF8Encoding.UTF8.GetBytes(cadena);

            //se utilizan las clases de encriptación
            //provistas por el Framework
            //Algoritmo MD5
            MD5CryptoServiceProvider hashmd5 =
            new MD5CryptoServiceProvider();
            //se guarda la llave para que se le realice
            //hashing
            keyArray = hashmd5.ComputeHash(
            UTF8Encoding.UTF8.GetBytes(key));

            hashmd5.Clear();

            //Algoritmo 3DAS
            TripleDESCryptoServiceProvider tdes =
            new TripleDESCryptoServiceProvider();

            tdes.Key = keyArray;
            tdes.Mode = CipherMode.ECB;
            tdes.Padding = PaddingMode.PKCS7;

            //se empieza con la transformación de la cadena
            ICryptoTransform cTransform =
            tdes.CreateEncryptor();

            //arreglo de bytes donde se guarda la
            //cadena cifrada
            byte[] ArrayResultado =
            cTransform.TransformFinalBlock(Arreglo_a_Cifrar,
            0, Arreglo_a_Cifrar.Length);

            tdes.Clear();

            //se regresa el resultado en forma de una cadena
            return Convert.ToBase64String(ArrayResultado,
                   0, ArrayResultado.Length);

        }

        public string DecryptKey(string clave)
        {
            byte[] keyArray;
             //convierte el texto en una secuencia de bytes
             byte[] Array_a_Descifrar =
             Convert.FromBase64String(clave);

             //se llama a las clases que tienen los algoritmos
             //de encriptación se le aplica hashing
             //algoritmo MD5
             MD5CryptoServiceProvider hashmd5 =
             new MD5CryptoServiceProvider();

             keyArray = hashmd5.ComputeHash(
             UTF8Encoding.UTF8.GetBytes(key));

             hashmd5.Clear();
    
             TripleDESCryptoServiceProvider tdes =
             new TripleDESCryptoServiceProvider();

             tdes.Key = keyArray;
             tdes.Mode = CipherMode.ECB;
             tdes.Padding = PaddingMode.PKCS7;

             ICryptoTransform cTransform =
              tdes.CreateDecryptor();

             byte[] resultArray =
             cTransform.TransformFinalBlock(Array_a_Descifrar,
             0, Array_a_Descifrar.Length);

             tdes.Clear();
             //se regresa en forma de cadena
             return UTF8Encoding.UTF8.GetString(resultArray);
        }
    }

Función MD5

Dejo la función para realizar el Hash MD5:
public string md5(string password)
{
  System.Security.Cryptography.MD5 md5;
  md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
  Byte[] encodedBytes = md5.ComputeHash(ASCIIEncoding.Default.GetBytes(password));
  return  System.Text.RegularExpressions.Regex.Replace(BitConverter.ToString(encodedBytes).ToLower(), @"-", "");
}

lunes, 10 de septiembre de 2012

Tomar valor de Checkbox y Radio con Jquery

Checkbox

HTML:



Javascript:
$("#chkHombre").is(‘:checked’)



Radio:

HTML:
Hombre: 

Mujer: 


Javascript:
$("input[name='optg']:checked").val()