2009-12-13 104 views
2

我有一個視圖,它將一堆數據添加到綁定的EditModel中。但是,當它被POST時,由於某種原因,在調用POST Action之前調用無參數的構造函數,而不是僅僅傳回綁定到視圖的模型。MVC視圖POST調用新構造函數而不是傳回模型

我認爲我所要做的就是確保在視圖頂部的「Inherits」標記中引用模型,但由於某些原因,所有填充的數據都會在POST和模型的新實例被實例化。 View肯定能夠看到模型,因爲我可以使用Visual Studio Intellisense來訪問模型字段。

我確定這是簡單的我很想念,所以任何指向哪裏看都會有所幫助。如果有幫助,我可以粘貼一些代碼。

謝謝!

回答

3

正如Omu所說,它將始終使用默認的modelbinder調用無參數構造函數。基本上,modelbinder基於元素名稱(如果已定義,可以加上前綴)填充表單集合中的公共元素。您需要確保您的元素名稱(不是ID)匹配您要在模型上填充的公共成員。

+0

對,我想我現在已經正確地把我的頭擰緊了,並且看到第二次調用構造函數不是我的問題(感謝有關此背景的信息)。我仔細檢查了所有的元素名稱,我似乎已經整理出來了,這是我的問題(我調整了我的模型數據,並在視圖中錯過了一些相應的元素名稱更改)。非常感謝所有人的幫助。仍然無法從下拉菜單中獲取值,但我將單獨發佈幷包含一些代碼。 Chris – Chris 2009-12-14 00:26:37

0

它被調用的構造函數,因爲這就是它應該發生的情況,現在看看爲什麼你的模型沒有填充數據,如果發佈視圖和發佈操作的代碼會非常有幫助。

0

這不是MVC的工作原理。當表單發佈時,MVC構造新的EditModel對象,並使用表單中提供的值填充它。它不保留EditModel,用於填充GET操作中的視圖。您必須確保您在POST方法中使用的每個值都在GET中的html輸入中設置。

相關問題