Frage

Ich freue mich auf die neue Version von ASP.NET MVC (siehe hier für weitere Details, wenn Sie es nicht schon gesehen haben) und ich ein paar ziemlich grundlegende Probleme habe, den Inhalt eines Objekts angezeigt wird.

In meiner Kontrolle habe ich ein Objekt vom Typ Person, die ich zu der Ansicht in ViewData.Model bin vorbei. Alles ist gut so weit und ich kann das Objekt in der Ansicht zur Anzeige bereit extrahieren. Was ich nicht obwohl bekommen, ist, wie ich brauche die Html.DisplayFor() Methode aufrufen, um die Daten zu Bildschirm zu bekommen. Ich habe die folgende versucht ...

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

, aber ich bekomme die folgende Meldung:

  

CS0136: Eine lokale Variable mit dem Namen ‚p‘ kann nicht in diesem Umfang deklariert werden, weil es eine andere Bedeutung zu ‚p‘ geben würde, die bereits in einem ‚Eltern oder Strom‘ verwendet, Umfang, etwas anderes zu bezeichnen

Ich weiß, das ist nicht, was ich tun soll - ich weiß, dass eine Variable neu definiert wird diesen Fehler erzeugen, aber ich weiß nicht, wie das Objekt von der Steuerung zuzugreifen. Also meine Frage ist, wie gehe ich das Objekt in die Ansicht, um seine Eigenschaften anzuzeigen?

N. B. Ich sollte hinzufügen, dass ich auf das in meiner knappen Freizeit lese, also ist es durchaus möglich, dass ich etwas Grundlegendes übersehen haben.

TIA

War es hilfreich?

Lösung

Html.DisplayFor kann nur verwendet werden, wenn Ihre Ansicht ist stark typisiert, und es funktioniert auf dem Objekt, das an die View übergeben wurde.

Also, für Ihren Fall müssen Sie die Ansicht mit der Art Person als Modelltyp (zB something.something.View<Person>) erklären (sorry, ich erinnere mich nicht die genauen Namen, aber dies sollte Sinn machen), und dann beim Aufruf Html.DisplayFor(p => p), p würde den Wert des übergebenen Modell (Person) Wert in der Ansicht.

Hope, den Sinn machte.

Andere Tipps

p ist bereits ein Variablenname; und Variablennamen haben im gesamten aktuellen Bereich eindeutig sein. Daher displayFor (p => p) nicht gültig ist, wie Sie eine neue Variable ‚p‘ dort erklärt. Auf diese Weise der Compiler nicht, ob nicht kennt Ihre Person p zu verwenden, oder die (p =>) variabel ist.

So benennen Sie es nur zu

<%= Html.DisplayFor(person => person) %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top