0

enter image description hereI intend to return the name of the child with the vaccines already administered. what happens is that it does not return anything to me, since if I call the Id it returns the Id of the Child

Model VacinacaoIndexData

      using GestCentros.Models;
using System.Collections.Generic;

namespace GestCentros.ViewModels
{
    public class VacinacaoIndexData
    {
       public IEnumerable<Vacinacao> Vacinacoes { get; set; }
        public IEnumerable<Vacina> Vacinas { get; set; }
        public IEnumerable<Enrollment> Enrollments { get; set; }

    }
}

Controler

public ActionResult Index(int? id, int? Idvacina)
    {
        var user = db.Users.Where(u => u.UserName == User.Identity.Name).FirstOrDefault();

        if (user == null)
        {
            return RedirectToAction("Index", "Home");
        }    
        var viewModel = new VacinacaoIndexData();    
        viewModel.Vacinacoes = db.Vacinacao
            .Include(v => v.Vacinas)
            .Include(v => v.Crianca)
            .Where(c => c.IdCentro == user.IdCentro);  

        if (id != null)
        {
            ViewBag.IdVacinacao = id.Value;
            viewModel.Vacinas = viewModel.Vacinacoes
                .Single(i => i.IdVacinacao == id.Value).Vacinas;
        }    
        if (Idvacina == null) return View(viewModel);           
            ViewBag.IdVacina = Idvacina.Value;
            // Lazy loading
            viewModel.Enrollments = viewModel.Vacinas.Single(x => x.IdVacina == Idvacina).Enrollments;
        // Explicit loading
        Vacina selectedVacina = viewModel.Vacinas.Single(x => x.IdVacina == Idvacina);    
        db.Entry(selectedVacina).Collection(x => x.Enrollments).Load();

            foreach (var enrollment in selectedVacina.Enrollments)
            {
                db.Entry(enrollment).Reference(x => x.Centro).Load();
            }    
            viewModel.Enrollments = selectedVacina.Enrollments;            

        return View(viewModel);
    }

In the Field Name I would like to Show Child Name, but it does not return anything

      @model GestCentros.ViewModels.VacinacaoIndexData

@{
    ViewBag.Title = "Index";
}

<h2 class="text-center">Lista de Crianças Vacinadas</h2>

<table class="table">
    <tr>
        <th>Nome</th>
        <th>Data Vacinação</th>
        <th>Vacinas</th>
        <th>Operações</th>
    </tr>

    @foreach (var item in Model.Vacinacoes)
     {
        string selectedRow = "";
        if (item.IdVacinacao == ViewBag.IdVacinacao)
        {
            selectedRow = "success";
        }
        <tr class="@selectedRow">
            <td>
                @Html.DisplayFor(model => item.Crianca.Nome)

            </td>
            <td>
                @item.DataVacina.ToString("dd/MM/yyyy")
            </td>
            <td>
                @{
                    foreach (var vacina in item.Vacinas)
                    {
                        @:  @vacina.Nome <br />
                    }
                }
            </td>
        </tr>
     }
</table>

@if (Model.Vacinas != null)
{
    <h3>Vacinas Ministradas na Campanha</h3>
    <table class="table">
        <tr>
            <th>Operações</th>
            <th>Vacina</th>
        </tr>

        @foreach (var item in Model.Vacinas)
        {
            var selectedRow = "";
            if (item.IdVacina == ViewBag.IdVacina)
            {
                selectedRow = "success";
            }
            <tr class="@selectedRow">
                <td>
                    @Html.ActionLink("Selecionar", "Index", new { IdVacina = item.IdVacina }, new { @class = "btn btn-sm btn-secundary" })
                    | @Html.ActionLink("Voltar a Lista", "Index", new { }, new { @class = "btn btn-sm btn-default" })
                </td>                
                <td>
                    @item.Nome
                </td>
            </tr>
        }

    </table>
}

@if (Model.Enrollments != null)
{
    <h3>
        Students Enrolled in Selected Course
    </h3>
    <table class="table">
        <tr>
            <th>Name</th>
            <th>Grade</th>
        </tr>
        @foreach (var item in Model.Enrollments)
        {
            <tr>
                <td>
                    @item.Centro.Name
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Grade)
                </td>
            </tr>
        }
    </table>
}

0 Answers0