2010-02-10 6 views

Répondre

2

MVC mappe automatiquement les valeurs de formulaire aux paramètres Action pour vous par nom. Les types de valeur chaîne et primitive sont faciles.

[HttpPost] 
public ActionResult AttemptLogin(string username, string password) 

Nous pouvons également utiliser les types d'entités comme paramètres d'action. Dans ce cas, le ModelBinder par défaut est utilisé et il essaie de lier toutes les données de publication qui correspondent aux modèles de "parameterName.PropertyName". Si mon formulaire contient un champ nommé "user.FirstName", mon objet utilisateur aura cet ensemble de propriétés.

[HttpPost] 
public ActionResult Save(User user) 

Custom ModelBinders et BindAttribute permettent une flexibilité supplémentaire dans la liaison de modèle.

// do not let MVC bind these properties 
[Bind(Exclude="Created, Modified")] 
public class User 

Je pourrais avoir un classeur personnalisé pour l'utilisateur, pour une utilisation dans un écran de changement de mes propres détails. Cela peut ne concerner que les propriétés FirstName, LastName et Email.

[HttpPost] 
public ActionResult ChangeDetails(guid Id, [ModelBinder(typeof(UserChangeDetailsBinder))] User user) 

Si j'avais un liant personnalisé qui doit être utilisé à la place de la valeur par défaut un, il serait enregistré dans Global.asax.cs.

ModelBinders.Binders[typeof(User)] = new UserBinder(); 

Vous pouvez également lire les valeurs de formulaire à partir de Request["fieldname"].

+1

Dans MVC2 à la place 'AcceptVerbs (" POST ")' nous utilisons l'attribut 'HttpPost'. –

+0

merci beaucoup – mary

Questions connexes