2009-06-02 4 views
1

Я обманываю с помощью учебника NerdDinner Ужин Редактировать управление.
Я получаю 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

Смежные вопросы