2013-06-18 101 views
0

我是MVC的新手,我有一個相對基本的問題。我已經通過搜索找到了一些答案,但沒有任何結論性地讓我覺得我知道這個常見功能的'最佳實踐':MVC 4使用從視圖傳遞到控制器的數據創建模型

我強烈地鍵入了視圖,並且'會員'和'寵物之間有關係」。我想在我的會員編輯視圖上創建一個頁面來創建一個新的寵物。

在這一點上,我想從會員編輯視圖的寵物通過MEMBERID創建頁面,以便它可以與相關的正確的成員啓動寵物模型的新實例。

我在想最好的做法是從成員編輯視圖(但通過什麼方法?)傳遞memberId,然後將此值存儲在隱式表單字段中,該表單字段是強類型'memberId'的正確名稱Pet模型的價值。然後,Pet創建控制器應該在創建Pet時自動獲取這個值。

我需要幫助從會員編輯視圖傳遞MEMBERID到寵物編輯視圖,以及一般的想法,如果這是爲了完成我希望做的最好辦法。感謝您的時間和協助!

+0

所以你告訴我,你相信編輯寵物的視圖創建時,成員id應該傳遞給視圖? – Tony

+0

嗨託尼 - 正如我所說,我是新來的,所以請原諒任何noobie的錯誤。由於我的觀點是強類型的,我認爲我可以將Pets的強類型memberId字段設置爲等於傳入的memberId。我也很好奇,如果我可以在「添加寵物」按鈕中傳遞整個成員模型並在寵物控制器中使用它,這可能是更好的方法。 – Stephen

+0

你有通過cookie驗證的用戶嗎?不要擔心,我們都從頭開始:) – Tony

回答

1

的直接方式是通過MEMBERID作爲路由值到CreatePet動作。

所以你的會員查看可能有一個網址像下面的導航到CreatePet行動:

@Url.Action("CreatePet", "PetController", new { memberId = Model.MemberId }) 

而且CreatePet行動將有MEMBERID作爲參數

public ActionResult CreatePet(int memberId) 
{ 
    ... 
} 

UPDATE

至意見問題:

我也好奇,如果我可以只通過整個會員模式在「添加寵物」按鈕,並使用在寵物控制器?這可能是更好的方法

這聽起來不像是一個好主意,原因有很多。爲什麼寵物需要非常瞭解會員?而如果客戶端欺騙成員值 - 你不應該依賴它們,那麼最好是僅使用作爲路由值傳遞的id查找成員服務器端。

+0

感謝喬,我真的切換到你的答案,因爲它直接回答我的問題。 Tony的回答也很棒,因爲它指向了將ViewModel模式傳遞給View的正確方向(這是我最終使用的)。我希望我可以將兩者都視爲已接受的答案。無論如何,謝謝你明確的答案,很容易實現。 – Stephen

1

所以這真的是首選,我已經看到了處理這類問題的方法是使用在其中創建專門爲視圖設計了一個視圖模型對象的MVVM格局。雖然這看起來像,但我有很多觀點!但那可能是當你需要切換到動態視圖。但是,如果你不能這種模式是一個很好的遵循它。比如你需要一個會員ID和我相信的寵物信息?你可以做的是傳遞一個包含寵物列表的對象,或類似的東西。然後在視圖模型中,您還傳遞成員ID或成員ID的列表。關於應用程序我不太清楚。但底線是您創建了一個特定於該視圖的模型,該模型還利用實際模型來傳遞必要的信息。這個鏈接是一個很好的描述。 http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx

好運。

+0

真棒 - 這絕對是指向正確的方向,這基本上是我要求的!再次感謝。 – Stephen

+0

沒問題,祝你有個美好的一天! – Tony

相關問題