Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aula 4, video 4 - @Html.HiddenFor(modelo => modelo.Nome)

No video, na hora que o Guilherme faz a view UsuarioFuncaoViewModel, ela fica da seguitne forma :

@model ByteBank.Forum.ViewModels.UsuarioFuncaoViewModel
@{
    Layout = null;
}

@Html.HiddenFor(modelo => modelo.Id)
@Html.HiddenFor(modelo => modelo.Nome)

<tr>
    <td>
        @Html.EditorFor(modelo => modelo.Selecionado)
    </td>
    <td>
        @Html.DisplayFor(modelo => modelo.Nome)
    </td>
</tr>

Minha duvida é, se no formulário já temos o campo

  @Html.DisplayFor(modelo => modelo.Nome)

por quê adicionar

@Html.HiddenFor(modelo => modelo.Nome)

também?? a informação do Nome da da funcao já não estava sendo enviado? ou por ele ter o helper DisplayFor ele não envia?

1 resposta
solução!

O motivo é que o DisplayFor só vai gerar um texto que é exibido para o usuário, mas quando o usuário submete o formulário de volta para o servidor, essa informação não é enviada de volta.

Para essa informação ser enviada de volta, ela tem que estar dentro de um campo, no caso um campo oculto porque foi usando o HiddenFor.

Se por algum motivo o nome estivesse dentro de um campo visível para o usuário, aí não haveria a necessidade do HiddenFor, mas não é esse o caso.