none
Listar o Atributo Nome e não o ID utilizando Razor. RRS feed

  • Pergunta

  • Prezado(as),

    Tenho uma view Index que lista os Agendamentos. Nessa lista aparece os Atributos da Agenda incluindo uma chave estrangeira IDServico. No entanto, a lista aparece apenas o índice do IDServico e preciso que apareça o Nome do Serviço.

    O código que apresenta o índice está dessa forma:

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.AutorizacaoAgenda)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Data)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Hora)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Disponibilidade)
            </td>
            @*Aqui é o código para mostrar o IDServico*@
            <td>
                @Html.DisplayFor(modelItem => item.IDServico)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Details", "Details", new { id=item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.ID })
            </td>
        </tr>

    Aguardo.

    Grato.

    sexta-feira, 3 de agosto de 2018 19:04

Todas as Respostas

  • oi,

    você queria fazer + ou - assim?

             <td>
                @Html.DisplayFor(modelItem => item.NomeServico)
            </td>
    Se seu objeto não tiver essa propriedade, ai você vai ter que monta o objeto na controller e passa ele para view. Fazer um viewModel

    sexta-feira, 3 de agosto de 2018 19:58
    Moderador
  • oi,

    você queria fazer + ou - assim?

             <td>
                @Html.DisplayFor(modelItem => item.NomeServico)
            </td>
    Se seu objeto não tiver essa propriedade, ai você vai ter que monta o objeto na controller e passa ele para view. Fazer um viewModel

    Olá Welington jr, Obrigado pela ajuda.

    Estava pensando em colocar dessa forma:

            <td>
                @Html.DisplayFor(modelItem => item.Servico.Nome)          
            </td>

    Porém não deu certo.

    Vou verificar sobre montar o objeto na controller e fazê-lo.

    obrigado.

    terça-feira, 7 de agosto de 2018 14:01
  • oi,

    você queria fazer + ou - assim?

             <td>
                @Html.DisplayFor(modelItem => item.NomeServico)
            </td>
    Se seu objeto não tiver essa propriedade, ai você vai ter que monta o objeto na controller e passa ele para view. Fazer um viewModel

    Olá Welington jr, Obrigado pela ajuda.

    Estava pensando em colocar dessa forma:

            <td>
                @Html.DisplayFor(modelItem => item.Servico.Nome)          
            </td>

    Porém não deu certo.

    Vou verificar sobre montar o objeto na controller e fazê-lo.

    obrigado.

    Minha controller está dessa forma para action Index:

    // GET: Agenda
            public ActionResult Index()
            {
                var agendas = db.Agendas.Include(t => t.Servico);
                ViewBag.IDServico = new SelectList(db.Servicos, "ID", "Nome");

                return View(db.Agendas.ToList());
            }

    No caso estou passando as variáveis ID e Nome referente ao Objeto Servico.

    O que há de errado para não aparecer o nome do servico na view Index da Agenda?

    terça-feira, 7 de agosto de 2018 14:05
  • mas se seu objeto Agenda tiver a propriedade Servicos, o intelisense era para reconhecer na view. Bastava dar um include igual

    return View(db.Agendas.Include(t => t.Servico).ToList());
    já era para funcionar

    terça-feira, 7 de agosto de 2018 14:23
    Moderador
  • oi,

    você queria fazer + ou - assim?

             <td>
                @Html.DisplayFor(modelItem => item.NomeServico)
            </td>
    Se seu objeto não tiver essa propriedade, ai você vai ter que monta o objeto na controller e passa ele para view. Fazer um viewModel

    Olá Welington jr, Obrigado pela ajuda.

    Estava pensando em colocar dessa forma:

            <td>
                @Html.DisplayFor(modelItem => item.Servico.Nome)          
            </td>

    Porém não deu certo.

    Vou verificar sobre montar o objeto na controller e fazê-lo.

    obrigado.

    Minha controller está dessa forma para action Index:

    // GET: Agenda
            public ActionResult Index()
            {
                var agendas = db.Agendas.Include(t => t.Servico);
                ViewBag.IDServico = new SelectList(db.Servicos, "ID", "Nome");

                return View(db.Agendas.ToList());
            }

    No caso estou passando as variáveis ID e Nome referente ao Objeto Servico.

    O que há de errado para não aparecer o nome do servico na view Index da Agenda?


    Verifiquei na minha tabela Agenda e o Campo Servico não possui valor e o campo IDServico possui o valores corretamente.
    terça-feira, 7 de agosto de 2018 14:24