asp.net-mvc
Vistas parciales
Buscar..
Introducción
Una vista parcial es una vista que se representa dentro de otra vista. Las vistas parciales se pueden reutilizar y así evitar la duplicación de código. Pueden ser renderizados por Html.Partial o Html.RenderPartial
Sintaxis
@ Html.Partial ("ViewName")
@ Html.Partial ("ViewName", ViewModel)
@ {Html.RenderPartial ("ViewName");}
Si su vista parcial se encuentra en una carpeta diferente a la compartida, entonces deberá mencionar la ruta completa de la vista como se muestra a continuación:
[email protected] ("~ / Areas / Admin / Views / Shared / partial / _subcat.cshtml")
Vista parcial con modelo.
También se puede agregar un modelo a la vista parcial:
@model Solution.Project.Namespace.MyModelClass
<p>@Model.Property</p>
En la Vista ahora solo puedes usar:
<div>
@Html.Partial("PartialViewExample", new MyModelClass(){Property="my property value"})
</div>
<div>
@{ Html.RenderPartial("PartialViewExample", new MyModelClass(){Property="my property value"}); }
</div>
Vista parcial a una cadena - para contenido de correo electrónico, etc.
Llamando a la función
string InvoiceHtml = myFunction.RenderPartialViewToString("PartialInvoiceCustomer", ToInvoice); // ToInvoice is a model, you can pass parameters if needed
Función para generar HTML
public static string RenderPartialViewToString(string viewName, object model)
{
using (var sw = new StringWriter())
{
BuyOnlineController controller = new BuyOnlineController(); // instance of the required controller (you can pass this as a argument if needed)
// Create an MVC Controller Context
var wrapper = new HttpContextWrapper(System.Web.HttpContext.Current);
RouteData routeData = new RouteData();
routeData.Values.Add("controller", controller.GetType().Name.ToLower().Replace("controller", ""));
controller.ControllerContext = new ControllerContext(wrapper, routeData, controller);
controller.ViewData.Model = model;
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.ToString();
}
}
Vista parcial - PartialInvoiceCustomer
@model eDurar.Models.BuyOnlineCartMaster
<h2>hello customer - @Model.CartID </h2>
Html.Partial Vs Html.RenderPartial
Html.Partial devuelve una cadena por otro lado Html.RenderPartial devuelve void.
Html.RenderPartial
Este método devuelve void y el resultado se escribe directamente en el flujo de respuesta HTTP. Eso significa que usa el mismo objeto TextWriter que se usa en la página web / plantilla actual. Por este motivo, este método es más rápido que el método parcial. Este método es útil cuando los datos que se muestran en la vista parcial ya están en el modelo de vista correspondiente.
Ejemplo: en un blog para mostrar los comentarios de un artículo, nos gustaría usar el método RenderPartial ya que la información de un artículo con comentarios ya está completa en el modelo de vista.
@{Html.RenderPartial("_Comments");}
Html.parcial
Este método devuelve una cadena codificada en HTML. Esto se puede almacenar en una variable. Al igual que el método RenderPartial, el método Parcial también es útil cuando los datos que se muestran en la vista parcial ya están en el modelo de vista correspondiente.
Ejemplo: en un blog para mostrar los comentarios de un artículo, puede usar el método Parcial, ya que la información de un artículo con comentarios ya se ha completado en el modelo de vista.
@Html.Partial("_Comments")