Pergunta

Eu estou olhando para a nova versão do ASP.NET MVC (veja aqui para mais detalhes se você ainda não viu já) e eu estou tendo alguns problemas bastante básico exibir o conteúdo de um objeto.

No meu controle eu tenho um objeto do tipo Person, o que eu estou passando à vista em ViewData.Model. Tudo está bem até agora e eu posso extrair o objeto na vista prontos para exibição. O que eu não entendo, porém, é como eu preciso chamar o método Html.DisplayFor(), a fim de obter os dados para a tela. Eu tentei o seguinte ...

<% 
    MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>

mas eu recebo a seguinte mensagem:

CS0136: Uma variável local chamado 'p' não pode ser declarada neste âmbito, pois daria um significado diferente para 'p', que já é usado em um "pai ou atual escopo para denotar algo mais

Eu sei que isto não é o que eu deveria estar fazendo - eu sei que redefinir uma variável produzirá este erro, mas eu não sei como acessar o objeto do controlador. Então, minha pergunta é: como faço para passar o objeto à vista, a fim de exibir suas propriedades?

NB. Devo acrescentar que eu estou lendo sobre isso no meu tempo livre limitado, por isso é inteiramente possível que eu tenha perdido alguma coisa fundamental.

TIA

Foi útil?

Solução

Html.DisplayFor pode ser usado somente quando sua opinião é fortemente tipado, e funciona no objeto que foi passado para a View.

Assim, para o seu caso, você deve declarar sua opinião com o tipo de pessoa como seu tipo de modelo, (por exemplo something.something.View<Person>) (desculpe, não me lembro os nomes exatos, mas isso deve fazer sentido), e, em seguida, ao chamar Html.DisplayFor(p => p), p levaria o valor do valor do modelo passado (Pessoa) na vista.

Hope que fazia sentido.

Outras dicas

p já é um nome de variável; e nomes de variáveis ??têm de ser único em todo o escopo atual. Portanto displayFor (p => p) não é válido, como você está declarando uma nova variável 'p' lá. Dessa forma, o compilador não sabe wether usar seu Person p, ou a variável (p =>).

Então, basta renomeá-lo para

<%= Html.DisplayFor(person => person) %>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top