public ActionResult Edit(int id, FormCollection formValues) {
// Retrieve existing dinner
Dinner dinner = dinnerRepository.GetDinner(id);
// Update dinner with form posted values
dinner.Title = Request.Form["Title"];
dinner.Description = Request.Form["Description"];
dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]);
dinner.Address = Request.Form["Address"];
dinner.Country = Request.Form["Country"];
dinner.ContactPhone = Request.Form["ContactPhone"];
// Persist changes back to database
dinnerRepository.Save();
// Perform HTTP redirect to details page for the saved Dinner
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
该方法中未使用 formValues
。它的目的是什么?
答案 0 :(得分:25)
MVC的一个主要进步是摆脱这种左右无聊的赋值代码。它有适当的机制,可以为您完成这项工作。在这种情况下,您可以执行以下操作:
Dinner dinner = dinnerRepository.GetDinner(id);
UpdateModel(dinner, formValues); // Automatically updates properties with values from the collection
dinnerRepository.Save();
希望这有帮助。
答案 1 :(得分:1)
只是发表一些意见,
dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]);
是什么模型绑定应该摆脱。
使用强类型视图,您应该将DateTime类型返回到dinner.EventDate中,而无需自行分配。
FormCollection返回通过html表单提交的所有输入,您可以使用以下语法检索这些元素
formCollection["Title"]
假设输入元素的名称是“Title”
强类型视图真是太神奇了!
答案 2 :(得分:0)
在这里查看FormCollection的使用方式:How can a formcollection be enumerated in ASP.NET MVC?