2009-02-12 15 views
30

Tengo, a petición de un cliente, creado un sitio enorme con formularios web ASP.NET. El problema es que estoy encontrando que los formularios Web de ASP.NET son algo poco intuitivos (mi gusto personal solamente). Entonces, lo que me gustaría hacer es usar MVC, pero no puedo esperar que mi cliente pague por mi tiempo en una reescritura completa (ni tiene el tiempo).¿Puedo utilizar ASP.NET MVC junto con los formularios web normales de ASP.NET

Entonces, lo que estoy preguntando es, ¿puedo usar ASP.NET MVC y formularios web al mismo tiempo y usar gradualmente MVC cada vez más? ¿Algun consejo?

Respuesta

16

Actualización 2014:

Visual Studio 2013 nos acerca a uno de ASP.NET. Ya no existe el tipo de proyecto MVC o el proyecto de formularios web, solo hay ASP.NET. Si desea mezclar formularios web y API web, o MVC y SignalR, ¡adelante! Le alentamos y apoyamos. Las nuevas características y funcionalidades son traídas con NuGet sin romper las aplicaciones existentes.

VS 13

Así que la mezcla de Web Forms y MVC (que ha sido más o menos estado trabajando sin problemas) está ahora alentados y los límites son ofuscado. Supongo que MS reconoció la necesidad de permitir que los proyectos migren lentamente a MVC, o simplemente migren porciones según sea necesario, y obtenga lo mejor de ambos mundos.


MVC Proyecto:

Habiendo usado MVC con formularios web desde hace bastante tiempo, es ciertamente posible y una excelente elección. La nueva funcionalidad y las páginas se pueden agregar fácilmente a las páginas de MVC con un buen diseño arquitectónico como DDD (Service Repository, Dependency Injection, etc.) y las cosas viejas pueden permanecer como están. La combinación de MVC dentro de una página webforms también funciona bien, aunque puede haber algunos problemas menores con la validación JS. Lo recomendaría muchísimo.

Es bastante fácil comenzar con la creación de una aplicación MVC (5 atm) y luego, después de obtener la plantilla básica en funcionamiento, agregar los formularios web antiguos dentro de una carpeta. De esta forma, obtienes la nueva configuración de MVC correctamente y conserva la compatibilidad con versiones anteriores.

  • Puede crear un proyecto de MVC y simplemente copiar todas las páginas de Webforms en, p. Ej. una carpeta. (Es posible simplemente actualizar un proyecto también, me imagino)
  • Configure el enrutamiento para ignorar las solicitudes con ese nombre de carpeta en particular en la URL. De esta forma, MVC y formularios web se pueden usar juntos sin problemas en las URL.
  • Asp.net WebForms aspx las páginas pueden residir en MVC, siempre que no se encuentren dentro de la carpeta/Vistas.
  • Vaya con Razor sobre la sintaxis anterior, puede personalizar los ayudantes de HTML fácilmente y es mucho más limpio.
  • Verifique los estándares y convenciones de MVC, el controlador debe ser muy liviano. No es el código subyacente el que puede contener tanta lógica como necesite.
  • Vistas no deben contener más de la lógica de presentación (sin lógica de negocio)
  • Todo lo nuevo => MVC
  • Recursos, etc. web.config son utilizables por ambas
  • Menús no utilice los viejos mapas de sitio

    : MVC en

El uso de MVC dentro de una página .aspx formularios web 210

El siguiente texto intenta demostrar cómo puede utilizar MVC desde dentro de una página de formularios web. (Por ejemplo, dentro de MyPage.aspx) Puede usar acciones/vistas MVC dentro de formularios web con, p. ajax para llenar una porción de la página o ciertos div's.

Las formas Web que contienen MVC funcionan bien, al menos cuando se agrega una llamada ajax dentro del HTML para llenar un div de MVC.

Dentro de un .aspx

..html & webforms code 

<div id="fillMeFromMVC"> 
    <script type="text/javascript"> 
    $.ajax(... call an MVC action to fill 
     the "fillMeFromMVC" div that this script sits inside of); 
</script> 
</div> 

Esto llenará una parte de la página a través de MVC y se puede hacer sin problemas al MVC sin preocuparse de lo que se hace en formularios web.

WebForms vs. MVC:

En este punto, es probable bastante conscientes de las diferencias entre las dos tecnologías, sin embargo, aquí es una pequeña comparación entre ellos. Ambos tienen sus propósitos y usos. Personalmente prefiero MVC por las cosas que he necesitado hacer, sin embargo, es probable que dependa de lo que esté tratando de lograr.

Si usa p. Ej. una SOA detrás de ellos, tanto los formularios web como las páginas MVC, pueden utilizar la misma lógica comercial. Los formularios web pueden ser perjudiciales cuando el código está todo en la página posterior y está vinculado a la interfaz de usuario (sin separación de preocupaciones). Con una arquitectura sólida y un poco de esfuerzo que se puede reducir sin embargo.

Más información:

Webforms vs. MVC (Code project)

Difference betweeen ASP.NET WebForms and ASP.NET MVC (a blog)

+0

creo que estás equivocado, porque MVC 'RouteCollection' tiene esta configuración denominada' 'RouteExistingFiles' que se false' por defecto. Esto significa que si accede a una página aspx existente (y no reside dentro de la carpeta ** Views ** (el archivo web.config local impide el acceso directo a los archivos), se debe manejar como un WebForm cotidiano. –

+0

Ok, No estoy del todo seguro sobre ese punto, edité la publicación. – lko

+0

@Iko: si no estás seguro, puedes probarlo, ¿verdad? :) Pero no estaba hablando de incorporar controles de servidor de formularios web dentro de la vista MVC ... Estaba diciendo que las páginas de formularios web pueden residir dentro de las aplicaciones web de MVC. Entonces, obviamente entendiste mal mi comentario porque lo que estabas haciendo es mezclar la página WebForms con la vista Asp.net MVC parcial. Y eso es algo diferente sobre lo que OP preguntaba. –

Cuestiones relacionadas