[TIP] Renderizando una Vista Parcial dentro de un WebForm

Introducción

Actualmente estoy en un proyecto donde están conviviendo formularios Web (tradicionales WebForms) y vistas de MVC (de ahí mi primera entrada de ayer).

Bien, mi problema ha venido al tener distintas MasterPages (como es comprensible) para los WebForms y para las Vistas, por eso de que implementan una página base distinta.

Bueno en definitiva el problema era para usar el mismo menú sin tener que rescribir el código de la vista parcial.

Solución

Dentro de la vista de mi WebForm, he definido un contenedor div, y gracias a jQuery he renderizado el contenido de mi menú dentro de dicho div.

<script type="text/javascript">
                   $(document).ready(function() {
                       var uri = '/Menu/Menu';//Está es la url donde se encuentra mi Vista parcial con el menu.
                       $.get(uri, function(data) {
                           $("#menu").append(data);
                       });
                   });
</script>    

El porqué de una vista parcial para el menú, vendrá en el siguiente post donde voy a explicar como definir un menú de manera dinámica con una tabla en BD.

Saludos

Un comentario sobre “[TIP] Renderizando una Vista Parcial dentro de un WebForm”

  1. Buenas Master,

    Pero se me está ocurriendo una cosa y si en vez de llamar desde el cliente al servidor, lo haces todo en el servidor,evitas dos llamadas no:)

    Te creas un UserControl y en el Render escribes el siguiente código.

    var Home = new HomeController();

    var HttpContextBase = new HttpContextWrapper(HttpContext.Current);
    var Route = new Route(«{controller}/{action}», new MvcRouteHandler());
    var RouteData = new System.Web.Routing.RouteData(Route,new MvcRouteHandler());
    var controllercontext = new ControllerContext(HttpContextBase, RouteData, Home);
    controllercontext.RouteData.Values.Add(«controller», «Home»);
    controllercontext.RouteData.Values.Add(«action», «Menu»);

    Home.ControllerContext = controllercontext;

    ViewResultBase view = Home.Menu() as ViewResultBase;
    view.ExecuteResult(Home.ControllerContext);

    Después es sencillo en la pagina donde quieras utilizar el usercontrol tienes que hacer lo siguiente.

    < %@ Register src="~/Paginas/WebUserControl1.ascx" TagName="MiControl" TagPrefix="uc1"%>

    Y para utilizar el usercontrol tienes que hacer lo siguiente.

    Disfrutalo!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *