Pregunta

Como muchos otros en este sitio, estoy considerando pasar a ASP.NET MVC para proyectos futuros.Actualmente, mis sitios ejecutan los formularios web ASP.NET 2.0 tradicionales y nos funcionan bien, por lo que mi otra opción es seguir con lo que sé y pasar a ASP.NET 3.5 con el material AJAX integrado.

Me pregunto cómo funcionan los controles de usuario en ASP.NET MVC.Tenemos toneladas de .ASCX controles y algunos controles compuestos.Cuando trabajo con diseñadores web, es muy fácil lograr que utilicen controles ASCX de manera efectiva, incluso sin ningún conocimiento de programación, lo que es una ventaja definitiva.Pero, por supuesto, las desventajas son el ciclo de vida de la página, que puede resultar exasperante, y el hecho de que los controles ASCX son difíciles de compartir entre diferentes proyectos.Los controles compuestos se pueden compartir, pero son básicamente una caja negra para un diseñador.

¿Cuál es el modelo en ASP.NET MVC?¿Existe alguna forma de crear controles que resuelva los problemas que hemos enfrentado usando ASCX y controles compuestos?Permitir un fácil acceso a los diseñadores web sin tener que preocuparse de que se rompa el código es una consideración importante.

¿Fue útil?

Solución

Para implementar un control de usuario, realice la siguiente llamada:

<% Html.RenderPartial("~/Views/Shared/MyControl.ascx", {data model object}) %>

También puede ver la sintaxis anterior que a partir de PR5 ya no es válida.

<%= Html.RenderUserControl("~/Views/Shared/MyControl.ascx", {data model object}) %>

Siempre tendrá que preocuparse por la rotura del código al pasar de Web Forms a MVC; sin embargo, el equipo de ASP.NET MVC ha hecho un gran trabajo para minimizar los problemas.

Otros consejos

Como sugirió Nick, de hecho podrá representar sus controles de usuario, pero obviamente el ciclo de página, el estado de página y la devolución de datos de los formularios web ASP tradicionales ya no funcionarán, lo que probablemente hará que sus controles sean inútiles.

Creo que tendrás que reescribir la mayoría de tus controles complejos para migrar tu sitio web a MVC, mientras que los controles simples que, por ejemplo, solo proporcionan formato y no tienen estado de devolución, simplemente deberían funcionar.El código proporcionado por Nick simplemente funcionará en este caso.

Y sobre compartir entre más proyectos:Creo que los controles se parecerán más a "componentes de representación HTML reutilizables" que se pueden compartir en un sitio web, en lugar de "componentes de código reutilizables" con lógica (como los controles de WebForms).Su lógica web estará/debería estar en los controladores de páginas y no en los controles HTML.Por lo tanto, compartir controles entre más proyectos no será tan útil como en el caso de WebForms.

MVC tiene un ciclo de vida de página diferente al de su control de usuario.

Puede considerar esto para reescribirlo.

El aspx es el vista.Aún necesitas reescribirlo, la sintaxis es diferente.JavaScript funcionará.Pero no creo que los WebControls funcionen.Porque MVC ya no tiene estado de visualización ni devolución de datos.

Para el código subyacente (aspx.cs), debe convertirlo en un Controlador clase.Page_Load El método ya no funcionará.Probablemente lo dejes Index() método.

Modelo son simplemente las clases de entidad que consume su código subyacente.

Conclusión, es una reescritura total.Salud.Feliz codificación.

Sí, puedes hacer RenderPartial.Ese es un buen comienzo.Pero eventualmente estos tipos necesitarán lógica y otras cosas tipo controlador.Esté atento a la implementación de un subcontrolador por parte del equipo del marco.También debería haber algo en MvcContrib pronto.O haz el tuyo propio.

Editar: Acabo de publicar sobre esto aquí: http://mhinze.com/subcontrollers-in-aspnet-mvc/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top