webform net mvc framework asp asp.net-mvc

asp.net-mvc - mvc - framework asp net



¿Deshabilitar el diseño en ASP.NET MVC? (10)

¿Necesita su vista tener una página maestra en absoluto? ¿Son una característica opcional de WebForms? Además, ¿estás renderizando html dentro de tu vista?

No tiene sentido renderizar una página ASPX escrita con una página maestra sin la página maestra, ya que los controles de contenido no están necesariamente en el orden correcto.

En MonoRail, puede cancelar CancelLayout () para no renderizar el diseño. En ASP.NET MVC, la única forma de afectar el diseño parece ser pasar el nombre del diseño al método View () como View ("myview", "mylayout"); solo parece que pasar nulo o una cadena vacía no hace lo que yo quisiera.

Terminé creando un diseño vacío que acaba de representar el contenido, pero parece tonto.

"No procesar el diseño" significa exactamente eso. En el motor de vista de formularios web, ellos llaman a los diseños "páginas maestras". Quiero renderizar solo la vista de mi acción y no rodearla con la página maestra.


Puede crear un ActionResult personalizado que haga prácticamente cualquier cosa. ActionResult controla lo que se devuelve al cliente como respuesta. Sería trivial crear una clase que extienda ActionResult que no haga nada.


Si no quieres mostrar contenido en la secuencia de salida, simplemente devuelve EmptyResult de tu acción en lugar de ViewResult.


En lugar de usar una vista normal, crea una vista parcial. Estos pueden utilizarse por sí solos, lo que se parece mucho a CancelLayout (), o puede incorporarlos a una vista que haga referencia a la Página maestra, en cuyo caso será el diseño completo. También son útiles si desea enviar un fragmento parcial de HTML en respuesta a una solicitud de AJAX.


En MVC 3, puede eliminar el código de diseño principal con:

@{ Layout = ""; }


Parece que esto fue imposible en la versión de ASP.NET MVC sobre la que preguntaba.


Al comienzo de la vista agrega esto:

@{ Layout = null; }

Si desea que la hoja de estilo permanezca, deberá agregar una referencia a ella en esa vista.


Para deshabilitar esto para todas las páginas, edite _ViewStart.cshtml (en la raíz, en la carpeta ''Vistas'') y asegúrese de que contenga lo siguiente:

@{ Layout = null; }

Y para habilitar la plantilla para cualquier vista específica, se puede agregar lo siguiente al archivo .cshtml para esa vista, para habilitar la plantilla:

@{ Layout = "~/Views/Shared/_Layout.cshtml"; }


¿No masterPage suerte al intentar establecer el parámetro masterPage en "" o null y devolver una View (como no lo hice)?

Luego intente esto y use PartialView en PartialView lugar:

public ActionResult Article(string id) { return PartialView("~/Areas/Store/Views/CustomerService/" + id); }

Necesitaba hacer esto para cargar el contenido de una vista de forma asincrónica desde JS.


En la acción del Controlador podemos establecer el diseño requerido.

return View("Index", "_LAYOUT_NAME", model);

https://.com/a/5161384/2039603