Referenciar Vista Parcial y que muestre sus datos al cargarse en la vista padre

publicado por: Anonymous

Hola cree una vista parcial a través de un un método de acción de un controlador.
Al referenciar a la vista parcial desde una vista padre con el siguiente código

@Html.Partial("~/Views/SubAutomovil/Create.cshtml")

se carga la vista parcial en la vista padre pero no carga los datos que le envía el controlador.
Si yo llamo a esta misma vista como a cualquier vista normal usando el siguiente Código

<a asp-controller="SubAutomovil" asp-action="Create">

Muestra la vista y carga los datos correctamente. Supongo entonces, que como la vista padre se vale de un controlador diferente al de la vista parcial, esta ultima no es capaz de cargar sus propios datos, Quizás no se. Tengo poco aprendiendo ASP.NET Core (MVC6) asi que tengo poca experiencia. Si alguien ya resuelve esto por favor muestreme como puedo resolverlo.

solución

puedes usar el helper @Html.Action()

ejemplo:
Digamos que tienes en tu controlador un método que retorna una vista parcial con los detalles de un trabajador, por lo que este método deberá aceptar parámetros tales como el id o el nombre del Trabajador.

controller

 public ActionResult DetallesTrabajador(int? id)
    {

        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Trabajador trabajador = db.Trabajadores.Find(id);
        if (trabajador == null)
        {
            return HttpNotFound();
        }
        return PartialView("_DetallesPartial", trabajador);
    }

en tu vista parcial muestras los datos del trabajador y la vas a renderizar de la siguiente forma:

Suponiendo que tu método se encuentra dentro del controlador Trabajador y quieres mostrar la parcial en la vista index del mismo controlador. lo llamas así:

Views/Trabajador/Index.cshtml

 @Html.Action("DetallesTrabajador", new { id = 27 }) 

solo especificas el nombre de la acción, pues se encuentra en el mismo controlador se le llamaría ChildAction. Si lo quieres llamar desde otra vista que se encuentra en otro controlador

@Html.Action("DetallesTrabajador", "Trabajador", new { id = 27 })

Donde “DetallesTrabajador” es la Acción que se encuentar en el controlador “Trabajador” y como en ambos casos se espera el id del trabajador como parámetro pues se lo pasas de la forma mostrada. Espero te sea de ayuda

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *