martes, 31 de marzo de 2015

Controladores MVC de diferentes DLL

¡Buenos días!

El día de hoy les compartiré un pequeño código de MVC de como mapear los controladores que se encuentran en diferentes DLL o carpetas dentro del mismo sitio.
MVC trabaja con un archivo de configuración llamado RouteConfig, dentro de la carpeta App_start en el cual se mapean las rutas de nuestros controladores, por default, este busca en la carpeta Controllers, que es donde MVC reconoce los controladores creados.

Supongamos que tenemos un sitio modular,  donde tenemos  diferentes DLL, en la cual puede haber controladores que necesitamos utilizar o incluso APIControllers, para ello en el método static que se encuentra en el archivo antes mencionado, agregamos el atributo namespace a lo que ya viene por default, y agregamos los namespaces de las demás DLL donde buscara las rutas y/o bien el namaspace de nuestro mismo proyecto donde alojamos los controladores pero en diferente carpeta.

Código Editado:

public static void RegisterRoutes(RouteCollection routes)
        {
            //declaracion de rutas
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Authentication", action = "Login", id = UrlParameter.Optional },
                namespaces: new[] { "DLL1.Controllers", "DLL2.Controllers", "ProyectoPrincipal.OtraCarpeta " }
                //Se indican los namaspaces de donde va a tomar las rutas de los controladores
            );

        }

Espero les sea Util. 

Saludos cordiales!

lunes, 22 de diciembre de 2014

Concatenar un Array C#

Hoy les traigo una pequeña utilidad.

Supongamos que necesitamos realizar quitarle la primera palabra a una cadena de texto, esto se pudiera realizar con un substring, pero no conocemos tamaño de esa primera palabra.

Para ellos podemos realizar un split a nuestro cadena, en mi caso estoy leyendo archivos y el nombre de mis archivos tienen una numeracion la cual no quiero mostrar al usuario mi cadena es archivo.Name, para lo cual le realizo un split con el espacio como separador de todo, es decir me regresara en un array todos las palabras separadas por un espacio en blanco.

Como notaran no lo agrego a un Array, lo hago de forma directa ya que Split me retorna un Array,
A esto le agrego la funcion Skip el cual toma el elemento de esa posicion y regresa los elementos restantes.

Todo esto dentro  de un string.Join, como parametro le regreso un espacion en blanco que es con el cual separe, y ya con esto me regresa mi cadena sin la primera palabra.


string.Join(" ", Path.GetFileNameWithoutExtension(archivo.Name).Split(' ').Skip(1))


Saludos cordiales!

miércoles, 5 de noviembre de 2014

Peticiones Ajax en MVC Parte 2

Bueno amigos Continuo con esta entrega de peticiones Ajax en MVC.

Lo que prosigue es crear nuestras peticiones Ajax para cada Botón, a lo cual tenemos dos opciones, crear un archivo .JS y agregar la referencia al archivo de configuración BundleConfig.cs. (Lo comentare en otro tema).

Para este ejemplo lo are de forma directa en mi vista agregando el script y creando dos funciones una para cada petición de mi ApiController.

continuación el código con su respectivo comentario:


<script>

    function saludar() {
        $.ajax({
            type: "POST",//Tipo de petición
            url: 'api/SaludarApi/Saludar?nombre=Gustavo',//Url a la que se hará la petición, en este caso pasamos un parámetro directo en la ruta
            contentType: "application/json; charset=utf-8",//Tipo en que irán nuestros datos
            dataType: "json", //Se define el tipo de dato que nos regresara nuestra petición
            beforeSend: function () {
                //Se ocupa para mostrar un loading o cualquier otra función, este se ejecutara mientras se realiza la petición. Aquí ocupo el plugin mencionado con anterioridad
                //Instrucion para indicar que muestre el loading
                $.blockUI();
            },
            success: function (result) {
                //Resultado de nuestra petición, dependiente de nuestro tipo de dato que regrese puede ser un objeto de tipo json, html, etc., donde el json puede ser un Array, un Objeto simple o un dato.
                alert(result); //En este caso mi método saludar concatena mi nombre con otra frase por lo tanto es un dato directo y lo muestro en un aler
                //Resultado:  "¡Saludos Gustavo!"
                //Instrucion para indicar que oculte el loading
                $.unblockUI();
            },
            error: function (xhr, textStatus, errorThrown) {//Función que cacha los errores ocurrido en nuestra petición
                //Este parámetro es el que cacha el error ocurrido es nuestra petición
                alert(errorThrown);
                //Instrucion para indicar que oculte el loading
                $.unblockUI();
            }
        });
    }


Peticiones Ajax en MVC Parte 1

Hola amigos!

El día de hoy les traigo la forma en como realizar una petición ajax. este ejemplo esta hecho con MVC, Razor y un ApiController, se utiliza Jquery un plugin llamado BlockUI que pueden descargar de aqui


Como les comente utilizaremos un ApiController que procese nuestra solicitud y nos retorne un mensaje.


A continuación les comparto dos métodos dentro de mi ApiController, el primero me regresa un string con un saludo, y el segundo me regreso un objeto con dos propiedades.



   /// <summary>
        /// Metodo de mi ApiController para saludar
        /// </summary>
        /// <param name="nombre">Nombre de a quien saluda</param>
        /// <returns>Regresa string con un saludo</returns>
        public string Saludar(string nombre)
        {
            return string.Format("!Saludos {0}!", nombre);
        }

jueves, 30 de octubre de 2014

Error durante la serialización o deserialización mediante JavaScriptSerializer de JSON. La longitud de la cadena supera el valor establecido en la propiedad maxJsonLength

El dia de hoy les traigo dos formar de solucionar el error: "Error durante la serialización o deserialización mediante JavaScriptSerializer de JSON. La longitud de la cadena supera el valor establecido en la propiedad maxJsonLength"

Este surge al serializar un objeto (Lista, Arreglo, Etc) y este excede el maximo numero de caracteres configurado en el maxJsonLength.

Para ello tenemos dos opciones:

1.- La primera es agregar unas lineas a nuestro web config, de la aplicacion. 

<system.web.extensions>
   <scripting>
      <webServices>
         <jsonSerialization maxJsonLength="5000000"></jsonSerialization>
      </webServices>
   </scripting>
</system.web.extensions>