到目前为止,我不知道为什么VS默认提供FormCollection参数?
public ActionResult Edit(int id)
{
Dinner dinner = dinnerRepository.GetDinnerById(id);
if (dinner == null)
return View("NotFound");
else
return View(dinner);
}
[HttpPost]
public ActionResult Edit(int id, object dummy/*, FormCollection collection*/)
{
Dinner temp = dinnerRepository.GetDinnerById(id);
if (TryUpdateModel(temp))
{
dinnerRepository.Save();
return RedirectToAction("Details", new { id = temp.DinnerId });
}
else
return View(temp);
}
编辑1:在我的实验中,除id以外的任何参数都是虚拟的,因为它们从未在httppost EDIT操作方法中使用过。
编辑2: TryUpdateModel在幕后使用FormCollection吗?
发布于 2010-12-20 17:12:39
FormCollection是ASP.NET为您提供对刚刚发布到页面的值的访问的方式。
您还可以使用强类型参数,然后ASP.NET MVC将在内部使用FormCollection来创建您的强类型对象。
发布于 2010-12-20 17:12:33
如果你的应用程序收到帖子,那么99.99%的时间将来自HTML表单。FormsCollection
为您收集表单中的所有值。
但是,在ASP.NET MVC中,使用强类型对象几乎总是更好。在大多数情况下,DefaultModelBinder
会为您创建它们,如果默认的IModelBinder
不能满足您的需要,您可以在需要时实现它。
发布于 2010-12-20 17:12:30
FormCollection
包含返回到服务器的表单状态。
如果在处理数据时需要执行任何自定义操作,则可以使用FormCollection
。否则,您可以愉快地删除它。
我大量使用它来进行分层模型处理。
https://stackoverflow.com/questions/4491994
复制