2009-06-02 8 views
1

NerdDinnerチュートリアルDinner Editコントロールを使いこなしています。
私は引数の1つとしてFormCollectionを取得しますが、UpdateModel()を使用する前にその中のデータをトリミングできますか?Trim()FormCollectionの値

[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); 
     } 
    } 

また、Request.Formキーを反復処理することで手動で行う必要がありますか?

答えて

2

生のフォーム値を使用する代わりに、モデルバインダーを使用してカスタムオブジェクトにバインドすることができます。

IModelBinderインターフェイスを実装することによって、独自のモデルバインダーを作成できます。 IModelBinder.BindModelメソッドでは、必要に応じてトリミングやその他の文字列操作を行うことができます。

これが完了すると、あなたの行動はあなたが望むようにフォーマットされたデータを受け取ります。

K Scott AllenとScott Hanselmanには、IModelBinderをカバーする記事がいくつかあります。

+0

Hanselmanのリンクはhttp://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspxです。 – nikmd23

関連する問題