2010-06-21 5 views
1

Je suis un peu noob alors s'il vous plaît pardonnez-moi si c'est une question stupide. Je charge une page avec succès en utilisant Model Binding dans ASP.NET MVC 2. Maintenant, je veux utiliser Model Binding pour soumettre les résultats d'un formulaire, mais je veux utiliser un modèle différent de celui que j'ai chargé. Est-ce possible? Ou devrais-je simplement utiliser le même ViewModel à ces deux fins?ASP.NET MVC - GET avec un ViewModel, POST avec un autre

+0

Pour MVC 3 et plus tard, voir http://stackoverflow.com/q/15094054/11683 – GSerg

Répondre

1

Oui, c'est vraiment possible. La seule chose à retenir est la name attributs sur votre formulaire les entrées doivent être les mêmes que les propriétés dans le viewmodel.

Actuellement, j'ai un formulaire fabriqué à la main (pas d'aide fortement typé) qui, une fois posté, se lie à un modèle de vue.

+0

donc je ne peux pas utiliser les aides fortement typés? Désolé, je suis confus. –

+0

Vous pouvez, tant que vos propriétés dans les deux modèles de vue portent le même nom. Par exemple. 'viewModel1.DisplayName' &' viewModel2.DisplayName' –

+0

Que se passe-t-il si viewModel2 est un sous-objet de viewModel1 (comme dans 'viewModel2.DisplayName ==> viewModel1.viewModel2.DisplayName')? – fretje

1

Oui, c'est possible. Votre action de contrôleur de détails et de créer une action de contrôleur sont des méthodes différentes afin que vous puissiez les faire accepter les types que vous voulez.

// 
// GET /Test/12 
public ActionResult Details(int id) 
{ 
    return View(new ViewModel{/*properties init*/}); 
} 

// 
// POST: /Test/Update 
[HttpPost] 
public ActionResult Update(UpdateModel model) 
{ 
    //Do something with the model 
    return RedirectToAction("Index"); 
} 
+0

Je suis plus intéressé par un exemple de la vue utilisant la liaison de modèle. La partie que vous avez posté est logique pour moi. –

Questions connexes