6
votes

MVC - Modèle Reliure avec plusieurs entités sur la même page

Je me demande comment utiliser le modèle de liaison dans un scénario où je retourne des informations de plus d'une entité sur une page?

Je souhaite afficher une combinaison de champs à partir de deux entités distinctes, c'est-à-dire une adresse client +. J'utilise les entités commerciales de Microsoft's Daab et personnalisées pour mon modèle.

Des idées?


1 commentaires

Ceci est un duplicata, je suis assez sûr. Faites un objet de modèle avec des propriétés publiques pour votre client et vos objets d'adresse.


3 Réponses :


-4
votes

Vous pouvez utiliser ViewData pour passer plusieurs modèles à une vue. XXX PRE>

et la vue: P>

Customer name: <%= (ViewData["Customer"] as Customer).Name %>
Street: <%= (ViewData["Address"] as Address).Street %>


1 commentaires

Cela passe plusieurs objets à la vue, ce ne sont pas des modèles, vous ne pourrez pas accéder à leurs propriétés via l'objet Modèle de vue.



20
votes

Si vous essayez de se lier à plusieurs modèles sur Postack, vous devez essayer d'utiliser l'attribut BIND et spécifier les préfixes utilisés pour chaque modèle de vos arguments. Dans certains scénarios - dans lesquels vous ne pourrez peut-être pas utiliser des préfixes séparés pour vos éléments de modèle - vous pouvez trouver cela plus facile à voir avec plusieurs tryupdateemodel et des blanchistiques séparés plutôt que de mettre les modèles dans les paramètres.

public class CustomerAddressModel
{
    public string Name { get; set; }
    public string Company { get; set; }
    public string Street { get; set; }
    ...
}


2 commentaires

+ Mais peut-être que "essayer / attraper avec UpdateModel" est meilleur que cela "imbriquée si (tryupdateModel" construction?


@ UE-GE-NE - peut-être. Cela dépend de la façon dont vous gérez la mise à jour de l'état modèle sur les erreurs. Sans écrire réellement les tests du code, il est difficile de dire exactement ce qui devrait être fait.



1
votes

La réponse courte est:

  1. Créez votre viewModel à l'aide des objets de domaine que vous souhaitez des informations sur,
  2. Utilisez ensuite @model comme première ligne à votre vue.

    Vous avez maintenant fermement tapé votre vue et avoir accès à toutes les propriétés des deux objets de domaine.


0 commentaires