2011-11-09 3 views
0

J'ai un modèle appelé Organisation et le modèle est stocké dans un assemblage appelé Modèle. Il est nécessaire d'insérer une organisation et de mettre à jour une organisation.ASP.NET MVC 3 Vues et modèle

quelques questions:

Lors de l'insertion d'une nouvelle organisation, je veux faire en sorte que l'organisation n'existe pas encore, donc je l'ai inséré une validation à distance. Je lie ensuite le modèle à la vue d'insertion.

Maintenant, lorsque je crée la vue de mise à jour, dois-je utiliser un modèle de vue différent qui supprime la validation à distance pour les noms d'organisation en double? Si c'est le cas, je ne peux pas utiliser mon modèle d'organisation de base pour la vue de mise à jour, alors dois-je créer deux vues différentes, une pour l'insertion et une pour la mise à jour? Si c'est le cas, il y aura 2 vues qui sont fondamentalement identiques mais qui utilisent des modèles différents.

Quelqu'un peut-il aider?

Répondre

0

Pour ce scénario spécifique, la validation qu'aucune autre organisation portant le même nom n'existe semble être valide pour les cas d'insertion et de mise à jour afin que vous puissiez réutiliser le même modèle de vue. Toutefois, la validation du nom n'existe pas lors de la mise à jour d'une organisation car si l'utilisateur ne modifie pas le nom de l'organisation, au moins un enregistrement de la base de données porte ce nom, celui en cours de mise à jour et la validation ignorer cet enregistrement. Par conséquent, si vous choisissez de réutiliser le modèle de vue, la validation doit s'effectuer en fonction du contexte de l'opération (insertion ou mise à jour).

+1

Je pense que le problème est que je n'utilise pas un modèle de vue, juste les entités de domaine.Je pense que je dois commencer à créer des modèles de vue, puis lier les vues à un modèle de vue plutôt qu'à l'entité de domaine. – Paul

+0

Généralement, il est préférable d'utiliser des modèles de vue, car vous pouvez les adapter à ce dont la vue a réellement besoin, mais ce n'est pas obligatoire. Comme presque tout dans le développement de logiciels, cela dépend du cas d'utilisation. –

0
  • Question 1: vérifier la validation:

Si leur est quelque chose pas valide, faites ceci:

If(isNotValid()){ 
    ModelState.AddModelError("Key", "The user name or password provided is incorrect.") 
} 

Key est le champ de votre point de vue qui est incorrect.

  • Question 2: Différence entre Créer/Modifier

Vous devez utiliser le même ViewModel, parce que dans votre mise à jour, ils peuvent encore changer le « nom de l'organisation » et vous devriez toujours vérifier si elle est unique .

Mais pourquoi devriez-vous utiliser un ViewModel juste pour vérifier la validation? Y at-il une raison pour laquelle vous ne pouvez pas vérifier les noms d'organisation pour l'unicité dans votre contrôleur et faire un ModelState.AddModelError quand il n'est pas unique?

Un ViewModel est quand vous devez étendre la page, par exemple

public class DashBoardViewModel 
    { public List(Of Organisation) Organisation {get;set;} 
    public List(Of Staff) Staff{get;set;} 
    public List(Of Assignment) Assignments{get;set;} 
    } 

Au-dessus serait un DashBoardViewModel fictif où je montre toutes les organisations, le personnel et de missions. Un ViewModel ne contient pas qu'un seul type d'objet, il contient plusieurs.

Et n'oubliez pas, parfois lorsque vous avez besoin d'ajouter des données à une vue, vous pouvez simplement utiliser ViewData ou ViewBag, au lieu de créer un ViewModel.