我剛剛開始學習ASP.NET MVC 3.我一直在瀏覽ASP.NET網站上的音樂商店示例,以及開始開發我的自己的網站,但我有一些麻煩理解我應該如何設置我的控制器操作方法。需要幫助設計到ASP.NET MVC的動作方法
在我的網站上,每個登錄的用戶都能夠在他們的項目上執行標準的CRUD操作。我已經在ProjectController上設置了類似於音樂商店示例的以下操作方法。到目前爲止,這對我來說很有意義。
ActionMethod View
ProjectController.Index() Lists the active users's projects
ProjectController.Details(int id) Shows details for project 123
ProjectController.Create() Shows a form to edit a new project
ProjectController.Create(FormCollection col) Adds a new project with the form contents
ProjectController.Edit() Shows a form to edit a new project
ProjectController.Edit(int id, FormCollection col) Adds a new project with the form contents
ProjectController.Deiete(int id) Shows a delete confirmation form
ProjectController.Delete(int id, FormCollection col) Deletes a project with the provided id.
此外,用戶將能夠將項目添加到每個項目。項目不能單獨存在,並且在創建時必須與項目關聯。我很難理解的是如何將引用傳遞給項目,應該創建一個項目。例如,在我的項目控制器中,我有一對類似於上述控制器的Create()操作方法。
ItemController.Create() Shows a form to create a new item
ItemController.Create(FormCollection col) Creates a new item with the details from the form.
但我不明白如何在第一Create()方法傳遞到新的項目應自該視圖()輔助方法來創建於只能接受一個對象參數的項目的引用。我應該只是將對項目的引用添加到ViewBag的屬性中?我是動態類型的新手,ViewBag對我來說似乎很神奇。所以我有點猶豫是否使用它。我也一直認爲強類型設計更好。那麼我是否應該創建一個單獨的「NewItemData」模型對象,其中包含對新項目的引用以及要添加到的項目?
表單一旦知道哪個項目正在添加一個項目,它應該如何在提交時將此信息傳回?是否應該在表單中隱藏「ProjectID」字段?或者應該將表單POST回到查詢字符串中帶有項目ID的URL?
www.mysite.com/Item/Create?ProjectID=1234
最後,我還希望能夠列出添加到每個項目的項目。這應該是ItemController還是ProjectController的一部分。爲了簡單起見,我堅持使用默認的Controller \ Action [ID] URL路由。下面列出了我的一些想法。我傾向於最後的選擇,但是真的很想聽聽那些有更多這方面經驗的人的想法。
Action Method URL
ItemController.Index(int ProjectID) \Item?ProjectID=1234
ItemController.List(int id) \Item\List\1234
ProjectController.Items(int id) \Project\Items\1234
是的你是對的,項目不能與項目一起存在,所以你的例子非常有意義。儘管我認爲對於項目特定的操作(如查看項目詳細信息,編輯和項目)仍然有單獨的ItemController也是有意義的。但是留下創建和刪除項目到項目控制器,因爲實際上我總是添加項目或從項目中刪除項目。 – 2011-04-17 01:38:40