Entiendo que las vistas parciales se usan para representar partes de una vista. Pero no puedo entender cuál es la diferencia entre return View()
y return PartialView()
y cuándo se usa cada uno.¿Cuál es la diferencia entre "return View()" y "return PartialView()"
Respuesta
Volver View()
- Renders un .aspx | .cshtml página
- Renders una página normal .aspx que también puede Vistas parciales contener
Volver PartialView()
- Renders Ascx | control de .cshtml
- Representa un segmento de HTML en el navegador que se puede solicitar a través de solicitudes AJAX o no AJAX.
Ver() devuelve ViewResult
PartialView() devuelve PartialViewResult
tanto heredar de ViewResultBase
La diferencia es descrita por debajo Reflector ...
public class PartialViewResult : ViewResultBase
{
// Methods
protected override ViewEngineResult FindView(ControllerContext context)
{
ViewEngineResult result = base.ViewEngineCollection.FindPartialView(context, base.ViewName);
if (result.View != null)
{
return result;
}
StringBuilder builder = new StringBuilder();
foreach (string str in result.SearchedLocations)
{
builder.AppendLine();
builder.Append(str);
}
throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, MvcResources.Common_PartialViewNotFound, new object[] { base.ViewName, builder }));
}
}
public class ViewResult : ViewResultBase
{
// Fields
private string _masterName;
// Methods
protected override ViewEngineResult FindView(ControllerContext context)
{
ViewEngineResult result = base.ViewEngineCollection.FindView(context, base.ViewName, this.MasterName);
if (result.View != null)
{
return result;
}
StringBuilder builder = new StringBuilder();
foreach (string str in result.SearchedLocations)
{
builder.AppendLine();
builder.Append(str);
}
throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, MvcResources.Common_ViewNotFound, new object[] { base.ViewName, builder }));
}
// Properties
public string MasterName
{
get
{
return (this._masterName ?? string.Empty);
}
set
{
this._masterName = value;
}
}
}
Una acción del controlador generalmente devuelve un Vista parcial cuando se utiliza AJAX, y se realiza una actualización de la región de la página representada por la vista parcial. La forma normal de usar vistas parciales es simplemente llamar al Html.RenderPartial
dentro de su vista principal.
return PartialView() devuelve el fragmento de código HTML y se utiliza con ViewUserControls - archivos ASCX. La principal ventaja de usar "return PartialView()" es cuando no desea representar todas las demás cosas de la página HTML, como etiquetas HTML, BODY, HEAD.
Uno de los usos más comunes que hago es cuando quiero representar solo el control del usuario en función de si la solicitud de una acción es una llamada AJAX.
Así que tengo una vista llamada MyControl.aspx donde uso RenderPartial HTML helper y tengo una vista parcial llamada MyControl.ascx donde realizo el renderizado.
puedo cambiar entre los dos en mi acción del controlador de esta manera:
if (Request.IsAjaxRequest())
return PartialView("MyControl"); // this renders MyControl.ascx
return View(); // this render MyControl.aspx
- 1. ¿Cuál es la diferencia entre Sender, From y Return-Path?
- 2. ASP.NET MVC - HttpException o return view?
- 3. ¿Cuál es la diferencia entre los métodos iterator y view?
- 4. Diferencia entre RedirectToAction() y View()
- 5. yield return versus return select
- 6. Cuál es la diferencia entre $ y jQuery
- 7. ¿Hay alguna diferencia entre el retorno myVar vs. return (myVar)?
- 8. lambda return bool
- 9. ¿Diferencia entre SurfaceView y View?
- 10. ¿Cuál es la diferencia entre ascx y .cshtml?
- 11. jquery: event.stopImmediatePropagation() vs return false
- 12. NSDocumentController currentDocument return nil
- 13. redirect_to! = Return
- 14. Singleton y @Autowired return NULL
- 15. else o return?
- 16. ¿Cuál es la diferencia entre {0} y ""?
- 17. Cuál es la diferencia entre = y: =
- 18. ¿Cuál es la diferencia entre .ToString (+) y ""
- 19. Cuál es la diferencia entre $ (...) y `...`
- 20. ¿cuál es la diferencia entre:.! y: r !?
- 21. ¿Cuál es la diferencia entre ".equals" y "=="?
- 22. ¿Cuál es la diferencia entre dict() y {}?
- 23. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 24. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 25. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 26. ¿Cuál es la diferencia entre + = y = +?
- 27. ¿Cuál es la diferencia entre " " y ""?
- 28. WCF return types
- 29. ¿Cómo diferenciar entre las teclas 'Enter' y 'Return' en Javascript?
- 30. List Intersect return null
estaría downvote si pudiera, pero ReturnView() vs View() no tiene absolutamente nada que ver con si se representa una vista ".aspx" o ".ascx". CORRECCIÓN: parece que, de hecho, puede manejar qué vista se obtiene usando la convención (es decir, el controlador representa la vista del mismo nombre). independientemente, puede alimentar tanto una vista .aspx como una vista .ascx a PartialView() sin problemas. – kdawg
'View()' devuelve un 'ViewResult' y PartialView() devuelve un' PartialViewResult'. Ejecuta Reflector en los dos métodos para ti y mira cuál debes usar para decidir qué renderizar. 'PartialViewResult' y' ViewResult' son dos clases diferentes que ambos heredan de 'ViewResultBase', ¡que están destinados a diferentes propósitos! PartialViews no tiene MasterPages (Views can), ¿realmente va a renderizar "' somecontrol.ascx' "usando' View() '... – xandercoded