我正在使用NerdDinner教程晚餐编辑控件 我得到一个FormCollection作为参数之一,我可以在使用UpdateModel()之前修剪它中的数据。
[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键手动执行此操作吗?
答案 0 :(得分:2)
您可以使用模型绑定器绑定到自定义对象,而不是使用原始表单值。
您可以通过实现IModelBinder接口来创建自己的模型绑定器。在IModelBinder.BindModel方法中,您可以修剪或执行您想要的任何其他字符串操作。
完成此操作后,您的操作将按照您希望的方式接收格式化数据。
有关详细信息,K Scott Allen和Scott Hanselman有一些文章涵盖了IModelBinder。