2009-06-10 7 views
1

Scénario: J'ai une page qui contient une liste déroulante et une table qui contient une liste de détails basée sur la valeur sélectionnée dans la liste déroulante lorsque la liste déroulante est modifiée.L'objet du modèle est null dans la page ASPX de MVC

Maintenant à la première instance lorsque la page est chargée, la liste déroulante contient une valeur vide suivie par d'autres valeurs. Donc, pour la première fois, il n'y aura pas de valeurs dans l'objet 'model' et donc lors du rendu des données, disons 'model.ID', il échouera car 'model' est nul.

Actuellement, je suis la manipulation de ce scénario en écrivant ce morceau de code dans la page ASPX

if (Model != null) 
{ 
    //DisplayData 
    Model.ID 
} 

Est-ce la bonne façon de le faire ou est-il une façon plus élégante dans MVC?

Répondre

3

Je considérerais de donner à votre vue un nouveau modèle vide si vous le pouvez, plutôt que null. Cela vous évitera d'avoir des vérifications nulles partout, et vraiment, qu'est-ce qu'une vue sans modèle? Si ce n'est pas possible (votre modèle est complexe et contient des champs non nullables que vous ne voulez pas afficher), pensez à changer le flux de travail de la page pour que la pièce affiche le modèle (peut-être une vue partielle) n'est pas montré avant que l'utilisateur ait fait la sélection initiale.

Si ce n'est pas possible non plus, alors vraiment, je ne dirais pas qu'il y a beaucoup de problèmes avec votre approche, à part le fait qu'il est fastidieux de programmer.

0

Je pense que la façon plus élégante fonctionne avec le modèle « par défaut » ou « vide »:

<%= (Model ?? new Model()).Id &>