2009-09-23 4 views
1

Dans mon contrôleur, je vérifie un articleID dans la chaîne de requête, s'il est présent, je rendrai la page d'édition d'édition, sinon je vais afficher la page d'affichage d'ajout.combinant modifier et ajouter une page de vue en une seule action

Maintenant, dans ma page d'édition, il y a des moments où certaines classes de mon ViewData peuvent être nulles.

Put Je veux préremplir des zones de texte dans la page d'édition.

Comment puis-je préconfigurer le texte dans des champs, tout en le protégeant contre un objet/une propriété nul (ne)?

+1

Je pense que le titre de cette question devrait dire "ajouter" et non "âge"? – Funka

Répondre

1

L'option de type sécurité consiste à définir deux ViewModels au lieu d'un. Un pour la page Ajouter et un pour la page Modifier. S'ils ont beaucoup de données communes dont la garantie de ne jamais être nulle, vous pouvez implémenter ces propriétés sur une classe de base commune, mais ce n'est pas nécessaire.

Lorsque vous décidez d'afficher la vue Ajouter, vous renvoyez un ViewResult avec le ViewModel approprié.

Lorsque vous décidez d'afficher la vue Edition, vous renvoyez un ViewResult avec que ViewModel. Chaque vue peut alors être une vue fortement typée basée exactement sur ce type de ViewModel.

Cette other SO answer élabore un peu sur cette approche.

+0

le problème avec cette approche, si j'ai 3 pages de vue, je dois maintenir tous les 3! par exemple ajouter une zone de texte à un, signifie 3 changements à s'inquiéter etc. – mrblah

+0

Comme je l'ai écrit dans l'autre réponse, vous pouvez utiliser une vue partagée (.ascx) pour les données communes, de sorte que vous avez seulement besoin de le maintenir en un seul endroit . –

Questions connexes