Question

Je regarde la nouvelle version de ASP.NET MVC (voir ici pour plus de détails si vous ne l'avez pas vu déjà) et je vais avoir quelques problèmes assez basique afficher le contenu d'un objet.

Dans mon contrôle, j'ai un objet de type Person, que je passe à la vue ViewData.Model. Tout va bien jusqu'à présent et je peux extraire l'objet dans la vue prêt pour l'affichage. Ce que je ne comprends pas bien, comment je dois appeler la méthode Html.DisplayFor() afin d'obtenir les données à l'écran. J'ai essayé ce qui suit ...

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

mais je reçois le message suivant:

  

CS0136: Une variable locale nommée « p » ne peut pas être déclaré dans ce champ, car cela donnerait un sens différent de « p », qui est déjà utilisé dans un champ « parent ou en cours » pour désigner autre chose

Je sais que ce n'est pas ce que je devrais faire - je sais que la redéfinition d'une variable produira cette erreur, mais je ne sais pas comment accéder à l'objet du contrôleur. Donc, ma question est, comment puis-je passer l'objet à la vue afin d'afficher ses propriétés?

N.B.. Je dois ajouter que je suis en train de lire sur ce sujet dans mon temps libre limité, il est donc tout à fait possible que j'ai manqué quelque chose de fondamental.

TIA

Était-ce utile?

La solution

Html.DisplayFor peut être utilisé que lorsque votre vue est fortement typé, et il fonctionne sur l'objet qui a été passé à la vue.

Alors, pour votre cas, vous devez déclarer votre vue avec la personne de type comme type de modèle, (par exemple something.something.View<Person>) (désolé, je ne me rappelle pas le nom exact, mais cela devrait donner un sens), puis lorsque vous appelez Html.DisplayFor(p => p), p prendrait la valeur de la valeur modèle passé (personne) dans la vue.

L'espoir qui fait sens.

Autres conseils

p est déjà un nom variable; et les noms de variables doivent être uniques dans toute la portée actuelle. Par conséquent displayFor (p => p) n'est pas valide, comme vous déclarer une nouvelle variable « p » là. De cette façon, le compilateur ne sait pas wether utiliser votre p personne, ou la variable (p =>).

Il suffit donc de renommer à

<%= Html.DisplayFor(person => person) %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top