Domanda

Sto guardando la nuova versione di ASP.NET MVC (vedi qui per maggiori dettagli, se non avete visto già) e sto avendo qualche problema piuttosto semplice che visualizza il contenuto di un oggetto.

Nel mio controllo ho un oggetto di tipo Person, che sto passando alla vista in ViewData.Model. Tutto è bene finora e posso estrarre l'oggetto nella visualizzazione pronto per la visualizzazione. Quello che non capisco, però, è come ho bisogno di chiamare il metodo Html.DisplayFor() al fine di ottenere i dati allo schermo. Ho provato quanto segue ...

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

, ma ottengo il seguente messaggio:

  

CS0136: Una variabile locale denominata 'p' non può essere dichiarato in questo ambito perché darebbe un significato diverso a 'p', che è già utilizzato in un 'genitore o corrente' ambito per indicare qualcosa di diverso

So che questo non è ciò che dovrei fare - So che ridefinire una variabile produrrà questo errore, ma non so come accedere all'oggetto dal controller. Quindi la mia domanda è: come faccio a passare l'oggetto alla vista, al fine di visualizzarne le proprietà?

NB. Dovrei aggiungere che sto leggendo su questo nel mio tempo libero limitato, quindi è del tutto possibile che ho perso qualcosa di fondamentale.

TIA

È stato utile?

Soluzione

Html.DisplayFor può essere utilizzato solo quando la vista è fortemente tipizzato-, e funziona sull'oggetto che è stato passato alla vista.

Quindi, per il vostro caso, è necessario dichiarare la tua vista con la Persona di tipo come il tipo di modello, (ad es something.something.View<Person>) (scusate, non ricordo i nomi esatti, ma questo dovrebbe dare un senso), e poi quando si chiama Html.DisplayFor(p => p), p prenderebbe il valore del valore del modello passato (persona) nella vista.

La speranza che avesse un senso.

Altri suggerimenti

p è già un nome di variabile; e nomi delle variabili devono essere univoci in tutta l'ambito corrente. Pertanto displayFor (p => p) non è valido, come si sta dichiarando un nuovo 'p' variabile lì. In questo modo il compilatore non sa wether di utilizzare il Person p, o la variabile (p =>).

Quindi, solo rinominarlo

<%= Html.DisplayFor(person => person) %>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top