asp.net mvc formcollection

时间:2010-05-13 08:32:46

标签: asp.net-mvc

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。它的目的是什么?

3 个答案:

答案 0 :(得分:25)

MVC的一个主要进步是摆脱这种左右无聊的赋值代码。它有适当的机制,可以为您完成这项工作。在这种情况下,您可以执行以下操作:

Dinner dinner = dinnerRepository.GetDinner(id);
UpdateModel(dinner, formValues); // Automatically updates properties with values from the collection
dinnerRepository.Save();

希望这有帮助。

答案 1 :(得分:1)

只是发表一些意见,

  1. dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]);是什么模型绑定应该摆脱。 使用强类型视图,您应该将DateTime类型返回到dinner.EventDate中,而无需自行分配。

  2. FormCollection返回通过html表单提交的所有输入,您可以使用以下语法检索这些元素 formCollection["Title"]假设输入元素的名称是“Title”

  3. 强类型视图真是太神奇了!

答案 2 :(得分:0)

在这里查看FormCollection的使用方式:How can a formcollection be enumerated in ASP.NET MVC?