Pregunta

Estoy buscando a la nueva versión de ASP.NET MVC (ver aquí para más detalles si usted no lo ha visto ya) y estoy teniendo algunos problemas bastante básico que muestra el contenido de un objeto.

En mi control que tengo un objeto de tipo Person, que estoy pasando a la vista en ViewData.Model. Todo va bien hasta ahora y se puede extraer el objeto en la vista de lista para su visualización. Lo que no entiendo, sin embargo, es la forma en que necesito para llamar al método Html.DisplayFor() con el fin de obtener los datos a la pantalla. He intentado lo siguiente ...

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

pero me sale el siguiente mensaje:

  

CS0136: Una variable local llamada 'p' no se puede declarar en este ámbito, ya que daría un significado diferente a 'p', que ya se utiliza en un padre o actual 'alcance para denotar algo más

Sé que esto no es lo que debería estar haciendo - Yo sé que la redefinición de una variable producirá este error, pero no sé cómo acceder al objeto desde el controlador. Así que mi pregunta es, ¿cómo puedo pasar el objeto a la vista con el fin de mostrar sus propiedades?

N.B. Debo añadir que estoy leyendo sobre esto en mi tiempo libre limitado, por lo que es muy posible que me he perdido algo fundamental.

TIA

¿Fue útil?

Solución

Html.DisplayFor se puede utilizar sólo cuando el Vista es de tipo fuerte, y funciona en el objeto que se pasó a la vista.

Por lo tanto, para su caso, debe declarar su vista con el tipo Person como su tipo de modelo (por ejemplo, something.something.View<Person>) (lo siento, no recuerdo los nombres exactos, pero esto debe tener sentido), y luego al llamar Html.DisplayFor(p => p), p tomaría el valor del valor de modelo pasado (persona) en la vista.

La esperanza que tenía sentido.

Otros consejos

p es ya un nombre de variable; y los nombres de variables tienen que ser único en todo el ámbito actual. Por lo tanto displayFor (p => p) no es válido, ya que está declarando una nueva 'p' variable de allí. De esta forma el compilador no sabe carnero para utilizar su persona p, o la variable (p =>).

Así que cambiarle el nombre a

<%= Html.DisplayFor(person => person) %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top