2010-05-13 68 views
7
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未在該方法中使用。它的目的是什麼?asp.net mvc formcollection

+0

考慮使用ViewModels http://www.jacopretorius.net/2010/01/use-view-models-instead-of-formcollection.html – Custodio 2012-04-10 12:46:39

回答

1

只是爲了發表一些看法,

  1. dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]);是綁定一定要克服的是什麼型號。 使用強類型視圖,您應該將DateTime類型重新放入dinner.EventDate中,而不必分配自己。

  2. 的的FormCollection返回所有通過HTML表單提交的輸入,你可以檢索使用下面的語法 formCollection["Title"]鑑於輸入元素的名稱是「標題」

這些元素強烈的意見是驚人的!

25

MVC的主要進步之一是擺脫這種左 - 右無聊的任務代碼。它有適當的機制可以爲你做這項工作。在這種情況下,你可以這樣做:

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

希望這會有所幫助。

+0

我可以創建或[添加](https://msdn.microsoft。 com/en-us/library/system.web.mvc.formcollection.add(v = vs.118).aspx)將值從模型[properties]映射到'formcollection'(http://stackoverflow.com/questions/737151/如何獲得關鍵值對中的屬性列表)? – stom 2017-01-17 15:31:16

相關問題