2009-06-02 13 views
1

Ich bin herumalbern mit dem NerdDinner Tutorial Dinner Edit Steuerelement.
Ich erhalte eine FormCollection als eines der Argumente, kann ich die Daten darin trimmen, bevor ich UpdateModel() verwende.Trim() FormCollection Werte

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(int id, FormCollection formValues) 
    { 
     Dinner dinner = dinnerRepository.GetDinner(id); 
     try 
     { 
      UpdateModel(dinner); 
      dinnerRepository.Save(); 
      return RedirectToAction("Details", new { id = dinner.DinnerID }); 
     } 
     catch 
     { 
      foreach (var issue in dinner.GetRuleViolations()) 
      { 
       ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage); 
      } 
      return View(dinner); 
     } 
    } 

Oder muss ich das manuell tun, indem ich über die Request.Form-Schlüssel iteriere?

Antwort

2

Anstatt die rohen Formularwerte zu verwenden, können Sie ein Modellbinder zum Binden an ein benutzerdefiniertes Objekt verwenden.

Sie können Ihren eigenen Modellordner erstellen, indem Sie die IModelBinder-Schnittstelle implementieren. In der IModelBinder.BindModel-Methode können Sie trimmen oder eine andere gewünschte Zeichenfolgenmanipulation ausführen.

Sobald dies erledigt ist, wird Ihre Aktion die Daten so formatiert bekommen, wie Sie es wollen.

Für weitere Informationen, K Scott Allen und Scott Hanselman haben ein paar Artikel, die IModelBinder abdecken.

+0

Der Hanselman Link ist http://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspx – nikmd23