2009-06-02 54 views
1

我與NerdDinner教程晚餐編輯控件玩弄鬼混。
我得到一個FormCollection作爲參數之一,我可以在使用UpdateModel()之前修剪它中的數據。修剪()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和斯科特漢澤爾曼有幾篇文章,涵蓋IModelBinder。

+0

Hanselman鏈接是http://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspx – nikmd23 2009-06-02 15:03:13