2010-12-29 16 views
6

provato a trovare modi per creare modelli di editor per i tipi nullable utilizzando il rasoio. Ho delle proprietà in una classe LinqToSQL che sono di tipo Guid e Nullable. quando uso @model Guid? nella prima riga del file Guid.cshtml, assume sempre Guidi come guida? tipi. Volevo creare un modello editor diverso per Guid ?, ma i nomi dei file non sono accettati? oppure < o> caratteri.come creare modelli di editor per Nullable <T> in Razor

per favore aiuto. Grazie.

+1

Hai provato '@model Nullable ' piuttosto che '@model Guid?'? – Buildstarted

+0

sì sì, penso che abbia funzionato meglio di quanto mi aspettassi. Voglio che sia un modello di file/editor diverso, ma penso che ciò accada. Grazie. il voto per te .. – AceMark

+0

Questo sembra funzionare se usi ad es. '@model Nullable ' o solo '@model Guid?' (anche se si passa in un tipo normale, non nullable sembra cast e lavora per me), ma mi piacerebbe anche saperne di più su questo. È possibile creare modelli separati per i tipi normali e annullabili (cosa sostituiresti? O < and > nei nomi dei file)? O è lo stile consigliato solo per fare un modello per il tipo nullable per gestire entrambi i casi? –

risposta

4

immagino vi posterò questo come una risposta :)

Hai provato @model Nullable<Guid> piuttosto che @model Guid?

6

Sembra che per i tipi di valori nullable l'intento sia quello di scrivere un modello di visualizzazione/editor che gestisca sia i tipi nullable che quelli non annullibili. Ecco un estratto da un post da Brad Wilson:

Durante la ricerca per il nome del tipo, viene utilizzato il nome semplice (vale a dire, Type.Name) senza namespace. Inoltre, se il tipo è Nullable, cerchiamo T (così otterrai il modello booleano indipendentemente dal fatto che tu stia usando "bool" o "Nullable"). Ciò significa che se stai scrivendo modelli per i tipi di valore, dovrai considerare se il valore è nullable o meno. È possibile utilizzare la proprietà IsNullableValueType di ModelMetadata per determinare se il valore è annullabile. Vedremo un esempio di questo sotto con il modello booleano incorporato.

Quindi, dovresti usare @model Guid? nel modello e controllare i valori nulli.

Problemi correlati