Posts Tagged: asp


15
may 12

Unable to build project output group ‘Content Files from x (Active)’

No Gravatar
Unable to Build Project Output Group

Unable to Build Project Output Group

Estoy trabajando en un proyecto con ASP MCVC bastante complejo con muchos archivos, muchas reglas y sobre todo comunicación con otro servicios .. y sucede que la semana pasada hice un cambio importante en el código y necesité generar nuevamente los archivos de instalación.. pero algo fallaba y no se podía generar el archivo .msi (setup) .. el error citaba algo como “Unable to build project output group ‘Content Files from ___ (Activate)” .. no me había pasado antes.. y pues el error no describía nada más .. por lo que encontrar el porque era algo tardado quizás..

Buscando un poco entoncré que esto ocurre cuando un archivo del proyecto fue eliminado del disco, pero no fue eliminado del entorno de desarrollo.. entonces al crear el archivo de instalación no se encuentra una fuente por consiguiente falla al generar el archivo instalador.

La solución.. simple!! solo expande todos las carpetas de tu proyecto y busca archivos que tengan un símbolo de admiración amarillo .. pues esos son los que están dando problemas.. o los restauras o los eliminas y listo.. si intentas nuevamente la generación del instalador, estoy super, super seguro de que no habrá más errores.

:)

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

24
feb 12

Arreglando compatibilidad IIS6 y reporviewer con IIS7 Windows Server 2008

No Gravatar

Hace poco tuve unos contratiempos con una aplicación WEB desarrollada para funcionar con IIS6
pues en el servidor donde se quería instalar era una versión más actual corriendo IIS7 más concretamente en un Windows Server 2008.

Para empezar, el instalador de la aplicación web no se ejecutaba correctamente, pues no permitía terminar el último paso de la instalación. Y además los reportes elaborados con reporviewer tampoco se visualizaban correctamente.Así que a investigar un rato en internet para saber como resolver los problemas.
Y encontre lo siguiente:

Para instalar los componentes para la administración de compatibilidad IIS6.0 usando el administrador del servidor de Windows Server 2008 y corregir el error en el instalador de la aplicación Web.

    1. Primero hay que presionar en el botón Inicio.
    2. Dar clic sobre Herramientas Administrativas y luego en Administrador del servidor.

      CompatibilidadII6-01

      CompatibilidadII6-01

    3. En el árbol de navegación de la izquierda expandir “Funciones” y con el botón derecho dar clic sobre “Servidor web (IIS) y seleccionar agregar servicios de función.
    4. En la lista de Servicios de función desplazar la barra hacia abajo y localizar las opciones
      “Compatibilidad con la administración de IIS6”.
    5. Seleccionar los check boxes para:
      Compatibilidad con la metabase de IIS6.
      Compatibilidad con WMI de IIS6.
      Herramientas de scripting de IIS6.
      Consola de administración de IIS6.

      CompatibilidadII6-02

      CompatibilidadII6-02

    6. Presionar el boton “Siguiente>” luego presionar el botón “Instalar” y confirmar la instalación.
    7. Presionar el botón Cerrar y salir del asistente de Servicios de función.

      CompatibilidadII6-03

      CompatibilidadII6-03

La compatibilidad con IIS6 se encuentra instalada.

Visto en:

http://www.activexperts.com/support/network-monitor/online/ii6metabase/

Para corregir los errores de visualización en los reportes de reporviewer:

Primero se necesita instalar el paquete distribuible 2008 de reporviewer

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6576

CompatibilidadII6-04

CompatibilidadII6-04

También puede ser útil darle un vistazo a esta página:

http://praveenbattula.blogspot.com/2010/03/fix-to-report-viewer-problems-in-iis-7.html

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

21
feb 12

How to Gridview con MVC Contrib para ASP MVC

No Gravatar
MVC Contrib

MVC Contrib

Como saben asp mvc 2 no tiene componentes visuales que nos ayuden a mostrar la información.. e ilógicamente eso es lo que más me ha gustado de este framework ya que eso nos permite tener el control total de las aplicaciones web.. a diferencia de webforms que se incluía código de más y era muy tedioso mezclar componentes propios que utilizaran ajax con su scriptManager y su updatePanel..

Entonces esta vez nos encontramos con el ya conocido problema de que asp mvc no tenemos un componente de tipo grid nativo.. por lo que básicamente tenemos 3 opciones para implementar uno.. la primera solución es hacerlo a mano.. escribiendo un tabla y vaciando todos los datos, creando paginación, agregando ordenamiento de registros por columnas y estilizándola porque siempre es necesario que se vea bonito.. la segunda opción es utilizar componentes ya escritos y comerciales por su puesto.. (Telerik, DevExpress, Ext, jqGrid) o la tercera opción que sería buscar alternativas de código abierto como MVC Contrib (CPOL) .. que esta última opción sería nuestra elección.

Entonces para empezar lo primero que se debe de hacer es descargar MVC Contrib de esta dirección http://mvccontrib.codeplex.com/releases .. es importante mencionar que MVC Contrib es una suite de componentes, pero en este ejemplo solamente utilizaremos el componente grid..

Una vez que hayamos descargado los archivos lo que necesitaremos será descomprimirlo, ubicar el archivo MvcContrib.dll y agregarlo como referencia a nuestro proyecto en Visual Studio.. Para poder generar un grid con datos necesitamos un modelo que luego será el contenedor de la información.. entonces lo siguiente es crear una clase de tipo modelo.. que en mi ejemplo sería lo siguiente:

UsuariosModel.cs

namespace MvcContribExample.Models
{
    public class UsuariosModel
    {
        public string nombre { get; set; }
        public string apellido { get; set; }
        public string deporte { get; set; }
    }
}

Listo.. ya tenemos nuestro modelo.. ahora vamos a trabajar con el controlador para manejar la primera petición a nuestra página y que automáticamente se cree el grid con datos.. entonces simplemente para generarlo damos clic derecho sobre la carpeta “controllers”, seleccionamos agregar y luego tomamos la opción “Controller…” —  como esto es un ejemplo muy básico no necesitamos que se genere nada.. asi es que la opción de agregar otros métodos no la requerimos..

HomeController.cs

using System.Collections.Generic;
using System.Web.Mvc;
using MvcContribExample.Models;
using FizzWare.NBuilder;
 
namespace MvcContribExample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var listaRandom = Builder<UsuariosModel>.CreateListOfSize(20).TheFirst(1)
                .With(x => x.nombre = "Jack")
                .And(x => x.apellido = "Fiallos")
                .And(x => x.deporte = "Baloncesto")
                .Build();
            var model = (List<UsuariosModel>)listaRandom;
            return View(model);
        }
    }
}

Por ahí verán que estoy utilizando NBuilder (using FizzWare.NBuilder;).. pero no es necesario que ustedes lo tengan en su proyecto.. NBuilder lo que hace es generar una lista arbitrária de datos.. es muy útil para hacer pruebas.. al final lo que NBuilder genera es una lista que se debe convertir a (List[UsuariosModel]) que es lo que espera el grid.

Ahora que en nuestro controlador tenemos un método llamado Index .. necesitaremos una vista con el mismo nombre.. entonces en la carpeta Views crearemos otra carpeta llamada Home y dentro de ella una vista llamada Index..

Y una vez con la vista Index generada pegamos el código del grid.. que sería algo como lo siguiente:

Views/Home/Index.aspx

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
 
<%@ Import Namespace="MvcContrib.UI.Grid" %>
<%@ Import Namespace="MvcContribExample.Models" %>
 
<!DOCTYPE html> 
<html> 
<head runat="server">
    <title>MVC Contrib Example, Ejemplo o como le quieran llamar</title>
</head>
<body>
    <div class="grid">
    <% Html.Grid((List<UsuariosModel>)Model)
       .Columns(column =>
       {
         column.For(c => c.nombre);
         column.For(c => c.apellido);
         column.For(c => c.deporte);
       }).Attributes(@class => "gridclass", @id => "gridview").Empty("Sin registros :(").Render();
    %>
    </div>
</body>
</html>

Y voilá.. habemus grid sin tener que escribir tanto código..  Ahora hay cosas extras que faltarían para tener un grid hecho y derecho.. como por ejemplo la paginación, ordenamiento datos por columnas y colorear las filas tipo zebra striped.. pero eso sería tema de otro artículo.. para adelantarme un poco.. yo utilicé los estilos de twitter bootstrap y agregué como estilo “zebra-striped bordered-table” .. además incluí jquery.tablesorter para permitirle al grid ordenarse por columnas.. algo de paginación con el mismo componente de MVC Contrib y ajax para paginar el grid sin recargar toda la página.

Espero les sirva para entender el funcionamiento de MVC Contrib, Nbuilder que no era parte del artículo pero que al final lo incluí para efectos de prueba y hasta casi un pequeño tutorial de ASP MVC. :D

Y porque no quiero dejar nada inconcluso.. dejo el código fuente que utilicé para el ejemplo.. MvcContribExample

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

20
dic 11

Asp.net MVC 2 Model List<> DropdownListFor

No Gravatar

ASP.NET MVC

En mi experiencia recorrindo diferentes lenguajes de programación y sus respectivos frameworks de desarrollo ágil para aplicaciones web, esta vez tocó el turno a asp mvc 2 y para iniciar esperaba crear un lista de selección.. Se que la versión actual de asp mvc es la 3, pero solamente se puede utilizar con visual studio 2010, el cual aun no hemos comprado, por eso este mini how to lo hago con la versión 2.

Leí muchos tutoriales y ejemplos sobre como lograr hacer un dropdownlist con información de un modelo, la mayoría de los ejemplos mostraban lo siguiente:

Crear un modelo y luego una propiedad de tipo List conteniendo SelectListItem que básicamente es una estructura de textos y valores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class EjemploModel
{
   [DataType(DataType.Text)]
   [Required(ErrorMessage = "Selecciona un mes")]
   [DisplayName("Mes")]
   [UIHint("List")]
   public List<SelectListItem> meses { get; set; }
 
   // Constructor para llenar la lista en la instancia
   public EjemploModel()
   {
      meses= new List<SelectListItem>();
      for(int i=1; i<=12; i++)
      {
         meses.Add(new SelectListItem() { Value =i.ToString(), Text = i.ToString() });
      }
   }
}

Hasta esta punto todo parece tener sentido.. creando una propiedad de tipo lista y luego pasándola a la  vista:

1
2
3
<%= Html.LabelFor(model => model.mes) %>
<%= Html.DropDownListFor(Model.mes, Model.mes, "-------")%>
<%= Html.ValidationMessageFor(model => model.mes, "*")%>

Y seguramente funciona.. el problema venía cuando hacia submit del formulario.. ya que el valor seleccionado del dropdownlist nunca era tomado como parametro en el action donde la enviaba.. Leí muchos post donde a novatos como yo les ocurría el mismo error.. claro, en los tutoriales nunca decían como resolverlo por lo que la respuesta viene a continuación, sencilla para serles sincero..

En los otros frameworks no es necesario definir una propieda de tipo lista, simplemente lo que se hace es definir una propiedad que en este caso sería Int .. y la lista crearla por aparte sin necesidad de hacerla propiedad del modelo. Sé que hay más de una manera de hacer esto y mi forma es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class EjemploModel
{
   [DataType(DataType.Text)]
   [DisplayName("Mes")]
   [UIHint("List")]
   public List<SelectListItem> mesLista { get; set; }
 
   [DataType(DataType.Text)]
   [Required(ErrorMessage = "Debe de seleccionar un mes de vencimiento.")]
   [DisplayName("Mes")]
   public int mes{ get; set; }
 
   // Constructor para llenar la lista en la instancia
   public EjemploModel()
   {
      mesLista= new List<SelectListItem>();
      for(int i=1; i<=12; i++)
      {
         mesLista.Add(new SelectListItem() { Value =i.ToString(), Text = i.ToString() });
      }
   }
}

Y en la vista quedaría de la siguiente manera:

1
2
3
<%= Html.LabelFor(model => model.mes) %>
<%= Html.DropDownList("mes", new SelectList(Model.mesLista, "Value", "Text"), "-------")%>
<%= Html.ValidationMessageFor(model =>; model.mes, "*")%>

Ahora al momento de hacer submit, el valor seleccionado se pasará hacia la propiedad mes y no a mesLista como ocurría anteriormente. Espero les sirva de ejemplo y guía..

Suerte

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

11
feb 09

Una nueva herramienta en desarrollo SICAP

No Gravatar

SICAP es una herramienta de colaboración para llevar el control, manejo y ejecución de proyectos de construcción civiles, hidroelectricos, mecanicos e hidráulicos.. El sistema como tarea básica es el encargado de administrar la documentación completa desde que se inicia un proyecto hasta su fin..

Puede que esto nos mantenga ocupados un par de meses, esta desarrollado para la web.. Realizado con C# para ASP.NET y componentes de DevExpress es una chulada visual.. Quizás con algo más de tiempo mientras se continua trabajando en su desarrollo podamos filtrar algunas capturas de pantalla..

Usando un potente motor de BD (Oracle) y como complemento el desarrollo de modelos tridimensionales por ahora solamente como aplicación de escritorio (quizas en un futuro para la web con cualquier engine 3D de flash), es una herramienta muy completa.. competitiva y confiable.. jejeje.!! vaya comercial el que me he lanzado.. n_n

, , , , , , , , , , ,

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

Qbit Mexhico Blog is using WP-Gravatar