2009-02-04 9 views
3
Manipuler

Lorsqu'un formulaire est affiché sur le serveur, il est possible de manipuler, modifier, définissez les valeurs contenues dans HTTP Post dans l'action du contrôleur? Je voudrais supprimer certaines valeurs de zone de texte saisies par l'utilisateur de sorte que ces valeurs doivent toujours être saisies à nouveau (par exemple les champs de mot de passe). Par défaut, les helpers Html extraient les valeurs initiales des contrôles HTML à partir des informations HTTP Post.ASP.NET MVC - HTTP Post

Répondre

7

Vous n'avez pas besoin d'un ModelBinder personnalisé.

[Bind(Exclude="Foo,Bar")] 
    public ActionResult Insert(T model) 

Maintenant Foo et Bar sont null.

Cela fait ce que vous demandez, mais je ne suis pas sûr que c'est ce que vous vouliez dire. :)

Je suppose que votre action a besoin de voir le mot de passe (ou autre) saisi par l'utilisateur. Mais si, par exemple, un champ différent doit être saisi de nouveau, vous ne voulez pas remplir le mot de passe lorsque vous réaffichez le formulaire. C'est une bonne idée. Mais dans ce cas, les classeurs de modèles ne sont même pas entrés. Vous définissez simplement le champ sur null avant de réafficher la vue.

public ActionResult Insert(T model) 
    { 
     try 
     { 
      Repository.Add(model); 
     } 
     catch (Exception ex) 
     { 
      ViewData["Message"] = ex.Message; 
      model.Password = null; 
      return View(model); 
     } 
     // success! 
     return RedirectToRoute(//... 
    } 
0

Vous pouvez créer un ModelBinder personnalisé qui vous permettra de manipuler les données publiées.

ScottGu's post qui couvre ce sujet.