Solución:
Según este enlace- https://docs.asp.net/en/latest/mvc/views/view-components
Como novedad en ASP.NET MVC 6, los componentes de vista (VC) son similares a las vistas parciales, pero son mucho más potentes. Los VC incluyen los mismos beneficios de separación de preocupaciones y capacidad de prueba que se encuentran entre un controlador y una vista. Puede pensar en un VC como un minicontrolador: es responsable de generar un fragmento en lugar de una respuesta completa.
Por lo tanto, es solo una mejora de la vista parcial y otra diferencia es que cuando usa la vista parcial, todavía tiene dependencia del controlador, mientras que en Ver componente no necesita un controlador. Entonces hay una separación de preocupaciones.
Hay una publicación detallada para ASP.NET View Components. http://www.tugberkugurlu.com/archive/exciting-things-about-asp-net-vnext-series-mvc-view-components
Un ejemplo en el que es posible que desee utilizar un ViewComponent
a diferencia de un PartialView
:
Necesita escribir un montón de lógica empresarial donde, por ejemplo, podría necesitar ponerse en contacto con un servicio web de terceros y obtener los datos y hacer algo con ellos y luego mostrar esta información.
Para el escenario anterior, seguro que puede escribir código C # en la vista parcial, pero es feo y también quiere que el código sea comprobable. Entonces, aquí es donde un componente de vista puede ser útil, es decir, puede escribir toda su lógica empresarial dentro de un componente de vista y devolver una vista (esto es de tipo ViewViewComponentResult
).
Los componentes de vista NO son lo mismo que las acciones secundarias.
ViewComponent
Los s también se utilizan cuando necesita una vista parcial, que requiere que se llame a un modelo en _Layout. Para evitar escribir código C # para crear el modelo en el diseño, es mejor usar un ViewComponent
que pueden hacer uso de los Servicios configurados para la aplicación, al igual que los controladores, a través de la inyección de dependencia.