Estoy disfrutando de Asp.Net MVC y estoy buscando utilizarlo en un próximo proyecto. Parte del proyecto, sin embargo, es un énfasis en la posibilidad de exponer las Vistas del proyecto a los diseñadores para cosas como la temática, etc. Un problema que anticipo es que las vistas de Asp.Net MVC están más bien centradas en el desarrollador. Realmente no quiero tener que educar a los diseñadores de las intracies de <% vs. <% = mucho menos algo así como <% foreach ...Vistas de diseño amigable en Asp.Net MVC
Tome una estructura de menú típico MVC, por ejemplo.
<div id="menu">
<ul>
<li><%= Html.ActionLink("Home", "Index", "Main")%></li>
<li><%= Html.ActionLink("About", "About", "Main")%></li>
<li><% Html.RenderPartial("LogOnUserControl"); %></li>
</ul>
</div>
Prefiero ser capaz de decirle a los diseñadores para ir con algo como
<div id="menu">
<ul>
<li>{ActionLink "Home", "Index", "Main"}</li>
<li>{ActionLink "About", "About", "Main"}</li>
<li>{Partial "LogOnUserControl"}</li>
</ul>
</div>
O
<div id="menu">
<ul>
<li><my:ActionLink text="Home" action="Index" controller="Main" /></li>
<li><my:ActionLink text="About" action="About" controller="Main" /></li>
<li><my:Partial name="LogOnUserControl" /></li>
</ul>
</div>
Sí, que los últimos se parece sospechosamente a una serie de UserControls. Personalmente, no soy fanático de usar UserControls para hacer esto solo porque la representación de esos controles sucede después de casi todo lo demás (según entiendo) y prefiero algo que encaje más con el ciclo de vida de MVC. . Todo lo que realmente necesito es un conjunto de marcadores de posición y una forma de reemplazarlos con la representación relevante.
Entonces, ¿cuál es el mejor lugar para hacerlo y qué tipo de concesiones estoy viendo aquí. Me puedo imaginar un par de ángulos para llegar a esto:
- Una clase de página de visualización personalizada donde puedo anular algo relevante. ViewPage.RenderView o ViewPage.FrameworkInitialize, tal vez, pero cómo se llega al texto desde allí no lo sé.
- Crea un TextWriter personalizado y reemplaza a ViewPage.CreateHtmlTextWriter que luego puedo interceptar la salida de texto para reemplazar cosas. Esto es bastante tarde en el ciclo, sin embargo, y se mezclará con otros filtros personalizados si no tengo cuidado.
- Crea mis propias clases IView y ViewEngine. No llegué muy lejos en este camino antes de preguntarme si me dirigía a un lugar muy malo.
- Usuario personalizadoControles que pueden imitar la funcionalidad necesaria.
Opiniones? ¿Otras opciones? ¿Mi ViewEngine es mi mejor opción? Mi propia ViewPage? ¿O los objetos de UserControl van a ser adecuados (por favor diga que no)?
Sus diseñadores front-end deben estar bien con la sintaxis predeterminada. No pondría demasiado esfuerzo en esto. De cualquier manera, MVC es una gran mejora para sus necesidades de todos modos. ;) –
No crearía nada solo para sus diseñadores. Entrenarlos en la sintaxis y seguir adelante. De lo contrario, estarás atascado manteniendo tu sabor de ViewEngine. Cuando salen nuevas versiones, puede haber cambios bruscos ... –
Quiero la menor fricción posible para los diseñadores. "Mejor de lo que están acostumbrados" no es lo suficientemente bueno. Estoy bien lidiando con los cambios de última hora en caso de que ocurran. Si esto se hace bien (es decir, centralizado en algo que se modifique fácilmente), es preferible un poco de mejora de la actualización al reentrenamiento del diseñador. –