2010-06-05 5 views
1

J'ai un modèle de vue de l'utilisateur qui a les propriétés suivantes:Comment lire un modèle de vue complexe sur POST?

public User user; 
    public List<Language> Languages; 

-je envoyer le modèle ci-dessus à la vue et de l'utilisation des aides html pour construire la forme, donc je me retrouve avec quelque chose comme:

<form action="/Users/Edit/5" method="post"><input id="user_UserId" name="user.UserId" type="hidden" value="5" /> 

Prénom

Nom
Email

<br /> 
<input id="user_Email" name="user.Email" type="text" value="[email protected]" /> 

Langue
- en

en

Maintenant, j'essaie de lire le POST dans quelque chose qui d'abord était quelque chose comme:

[AcceptVerbs(HttpVerbs.Post)] 

public ActionResult Modifier (int UserId, sous forme FormCollection) {

et ne peut pas obtenir la variable user.UserId , user.FirstName variable etc.

Toute idée de ce qui doit être fait pour pouvoir lire ce type de requête POST. Je suis un peu réticent à modifier mon ViewModel car il est très simple et facile à maintenir tel quel.

Merci.

Répondre

0

Apparemment, la réponse facile est d'utiliser le préfixe, quelque chose comme:

public ActionResult Edit([Bind(Prefix="user")] int UserId, FormCollection form) { }

Cependant, je reçois toujours le

Le dictionnaire paramètres contient une entrée null pour le paramètre 'UserId' de le type non nullable 'System.Int32' pour la méthode 'System.Web.Mvc.ActionResult Edit (Int32, System.Web.Mvc.FormCollection) »

Toute idée comment résoudre ce problème?

2

J'ai eu un problème similaire il y a quelque temps. Cet article a été utile: Editing a variable length list

+0

Je ne semble pas comprendre comment appliquer le message spécifié ci-dessus à mon cas spécifique. Puis-je peut-être modifier le nom des éléments d'entrée qui en résultent? J'utilise l'assistant HiddenFor pour l'ID utilisateur. – Interfector

+0

Notez le "using (Html.BeginCollectionItem ("gifts") "L'astuce consiste à entourer votre collection avec cette classe d'assistance, c'est la partie la plus importante de l'article. – pvieira