2012-10-09 28 views
5

Recientemente me uní a un grupo que administra una aplicación web ASP clásica. Ha funcionado bien para las necesidades de nuestro grupo. Sin embargo, se tomó una decisión, antes de unirme, para pasar a ASP .Net. Como somos en su mayoría desarrolladores ASP, escribimos código en ASP .Net como lo haríamos en ASP clásico (en su mayor parte). ¿Sería posible introducir MVC a esta aplicación/proyecto?¿Se puede utilizar MVC framework en una aplicación web que actualmente utiliza ASP .NET?

Gracias!

Respuesta

2

Sí, es posible usar MVC en un proyecto tradicional de WebForms. Emigré un proyecto Web Forms grande para MVC 2 hace un par de años, y aquí están mis conclusiones (los he actualizado para reflejar MVC 3)

  1. Asegúrese de que tiene instalado .NET 4.0, así como el MVC 3 framework y extensiones VS.
  2. Cree un nuevo proyecto MVC en blanco para usar como referencia.
  3. Mire la configuración web.config predeterminada para el proyecto de referencia. Básicamente, desea utilizar la referencia web.config y combinar lo que necesita de su proyecto actual.
  4. Mire la referencia global.asax.cs. Similar a lo anterior, desea fusionar los cambios en los archivos .cs de referencia en los archivos global.asax.cs de su aplicación actual.
  5. Usted tendrá que añadir las siguientes referencias a su proyecto web:

    System.Web.Abstractions, System.Web.Extensions, System.Web.Helpers, System.Web.Mvc, Sistema .Web.Enrutamiento

  6. Puede habilitar las extensiones VS cambiando los ProjectTypeGuids:

    • En el Explorador de soluciones, haga clic en el nombre del proyecto y seleccione Descargar proyecto. A continuación, haz clic con el botón derecho en el nombre del proyecto y selecciona Editar nombre del proyecto.csproj.
    • Localice el elemento ProjectTypeGuids y agregue {E53F8FEA-EAE0-44A6-8774-FFD645390401}.
    • Guarde los cambios, haga clic con el botón derecho en el proyecto y luego seleccione Recargar proyecto.
  7. Añadir las siguientes carpetas estándar para el contenido MVC:

    • ~/Vistas
    • ~/Vistas/Shared
    • ~/Controladores
    • ~/Modelos (por sus modelos de vista , opcional)
    • ~/contenido (CSS e imágenes, opcional)
    • ~/Scripts (por JS, opcional)

Notas adicionales:

  1. Si sus formularios Web existentes se basa en la configuración web.config de autorización (tales como la prevención de los usuarios no autorizados), esto no será reconocido por las acciones de MVC, porque el enrutamiento funciona completamente por separado de la autorización de WebForms. Use AuthorizeAttribute para requerir autorización o restringir acciones a ciertos roles o usuarios. Puede incluso specify global filters para que no tenga que aplicar este atributo en cada controlador o acción.
  2. Puede haber consideraciones adicionales para hacer que MVC funcione con versiones de IIS anteriores a 7, o con grupos de aplicaciones que usan la canalización clásica. Considere usar IIS 7+ con canalización integrada.
  3. Mis notas anteriores implican principalmente obtener la línea de base de funcionamiento de MVC, que utiliza vistas ASPX. Las vistas ASPX usan el mismo marcado que los archivos ASPX a los que está acostumbrado en WebForms. También puede usar la nueva sintaxis de Razor (primer), que recomiendo encarecidamente. Puede usar las páginas de vista ASPX y Razor al mismo tiempo. Sin embargo, no puede usar una página maestra ASPX en una vista Razor (o viceversa). Además, MVC encontrará y usará las vistas ASPX antes de las vistas de Razor, por lo que si actualiza una vista a Razor, elimine la ASPX original. Tendrá que hacer un poco de trabajo adicional para habilitar las vistas de Razor. Estoy tratando de encontrar mis notas para habilitar Razor. Actualizaré cuando los encuentre. Una vez que tenga Razor instalado y funcionando, puede usar this tool by Telerik para convertir ASPX a Razor.
  4. Here is a question en SO sobre un problema que tuve durante la actualización. Solo lo estoy proporcionando porque cubrió algunos de los puntos que mencioné anteriormente con más detalle. Sin embargo, estaba actualizando a MVC 2 en ese momento, por lo que algunas de estas cosas están desactualizadas.
+0

Esta respuesta no menciona Enrutamiento; Sospecho que las rutas MVC predeterminadas van a interferir con la disponibilidad de la mayoría de las páginas normales de ASP.Net. –

+0

@ChrisMoschini MVC verificará si el recurso solicitado coincide con un archivo físico y, de ser así, ese archivo se procesará de acuerdo con su controlador. Entonces, en términos de páginas .ASPX, no es un problema. Sin embargo, deberá resolver cualquier problema en el que tenga una URL que sea enrutable a MVC y también a uno o más manejadores.Para su proyecto promedio de WebForms, eso no es muy común, pero es posible. Ejemplo: supongamos que tiene un documento predeterminado .ASPX pero quiere que MVC se haga cargo. Necesitarás: A) Cambiar el documento predeterminado para que ya no se considere .ASPX o B) Eliminar el ASPX – HackedByChinese

2

La respuesta corta es sí, es posible.

Scott Hanselman ha escrito sobre this topic con anterioridad.

Dependiendo de las habilidades de su equipo, puede que le resulte difícil ponerse al día: es posible escribir código de estilo MVC limpio en ASP clásico pero la mayoría de las personas no.

1

Por supuesto, es técnicamente posible. Sin embargo, parece que sería un choque cultural, ya que MVC funciona de forma bastante diferente a Classic ASP o ASP.NET WebForms. Creo que valdría la pena hacerlo, o simplemente seguir con ASP.NET WebForms si eso parece más natural. Pero si todavía no se ha comprometido completamente con WebForms, MVO parece tan fácil de mover como IMO.

1

Sí. Trabajé en un proyecto que comenzó como ASP.NET simple y luego agregó algunas páginas ASP.NET MVC. Eventualmente nos gustó mucho más MVC que eventualmente migramos todas nuestras páginas de WebForms para usar MVC. Pero todo el tiempo, los dos sistemas funcionaron muy bien juntos.

Este es el único truco real que recuerdo haber topado: WebForms funciona al tener toda la página dentro de una gran etiqueta <form>. Como HTML no le permite anidar etiquetas <form>, normalmente no puede usar formularios MVC dentro de una página de WebForms. Guarde sus páginas de WebForms separadas de su contenido de MVC, evite el uso de formularios HTML en contenido de MVC que puedan aparecer en una página de WebForms, o use cuadros de diálogo emergentes para sus formularios que se crean fuera del área DOM de WebForms.

Cuestiones relacionadas