2012-10-05 7 views
1

Je dois capturer trois types d'informations différents d'un nouvel utilisateur qui s'enregistre pour la première fois dans une application MVC 3 (en utilisant d'abord le code EF). Idéalement sur la première page (qui aura trois onglets)Mise à jour de plusieurs modèles dans ASP.NET MVC

  1. info utilisateur
  2. informations utilisateur Extended
  3. Avantages choisis par l'utilisateur

La méthode de registre du contrôleur de compte doit remplir l'utilisateur table quand il déclenche. J'ai besoin de conseils sur la meilleure façon de capturer les autres données. Puis-je créer un modèle UserDetails pour les données supplémentaires? Si oui, est-il possible de mettre à jour ceci à partir de la même page? (qui serait la page Compte/Registre) Dois-je faire quelque chose dans le contrôleur de compte ou la relation entre les modèles sera-t-elle suffisante?

Y at-il de bons exemples à ce sujet qui expliqueraient cela? J'ai essayé le MVC Contoso Université un mais n'a pas pu voir si je pouvais le faire.

un conseil très bienvenue :)

Merci

Répondre

1

Vous pouvez créer un modèle de vue qui combine tous les champs dont vous avez besoin avec les autres modèles, et tapez fortement votre vue sur celle-ci. Une fois que l'utilisateur a renvoyé l'information au contrôleur, vous traiterez chaque propriété de manière appropriée.

public class RegisterViewModel() 
{ 
    //Userinfo 
    public string UserName {get; set;} 
    ... 
    //Extended user info 
    public string FirstName {get; set;} 
    public string LastName{get; set;} 
    ... 
    //Benefits 
    public string BenefitName {get; set;} 
    ... 
} 

puis

[HttpPost] 
public ActionResult Register (RegisterViewModel viewModel) 
{ 
    //grab the user info from the view model and process it 
    viewModel.UserName... 

    //grab the extended info and process it 
    viewModel.FirstName... 
    //grab the benefit info and process it 
    viewModel.BenefitName... 
} 
+0

Merci pour l'aide. J'ai essayé ce que vous avez suggéré mais j'obtiens toujours une erreur similaire en essayant d'enregistrer - La référence d'objet n'est pas définie sur une instance d'un objet. - newuser.UserDetails.Firstname = viewModel.Firstname; –

+0

Qu'est-ce que null exactement? –

+0

Ahh, je n'avais pas créé d'instance de NewUser. Fait cela maintenant et tout le travail. Merci –

0

une vue unique ne peut avoir un modèle. Vous pouvez y mettre toutes les informations dont vous avez besoin. C'est la solution la plus simple. Le modèle de votre vue ne doit pas être mappé aux classes que vous utilisez ailleurs pour que vous puissiez avoir vos informations utilisateur, informations utilisateur étendues et avantages choisis par l'utilisateur dans un même modèle. Alternativement, vous pourriez faire un processus en deux ou en trois étapes, mais vous avez dit que vous ne le souhaitez pas.

Questions connexes