2011-08-12 55 views
0

我正在使用應用程序中的一個功能,其中模型將是動態的,因爲任何設置數據都可以顯示,並且視圖將獲得模型基於他們點擊的標籤。我使用隱藏字段來存儲設置名稱,因爲它們與模型名稱相同。例如,如果tab1-> Settings1,那麼Model是Settings1 [已經存在於模型中]。所以我在View中使用了@ model dynamic,並使用@ Html.EditotForModel()根據模型繪製了所需的UI。我的問題是,當我做HttpPost編輯目前我使用FormCollection讀取該頁面上的數據,當我在param中聲明模型名稱它會爲我得到它,但我不知道哪個模型回來以外由隱藏變量,我需要它,因爲這個問題導致模型驗證被破壞。任何幫助或反饋表示讚賞?如果需要,我可以提供更多細節?有沒有人在這個問題之前?MVC Razor如何在模型動態時在HttpPost上的控制器中獲取模型

回答

0

動態可以是一件好事,也可能是一件壞事。在控制莊園中具有通用接口的模型上使用它們是最好的。

有幾種不同的選項,您可以看看: 1) 您是否嘗試過讓操作方法接受動態類型?這可能是最簡單的方法。

您可能必須設置一個投射助手才能根據隱藏字段將對象轉換爲正確的類型。

2) 我在一些代碼中有類似的想法,但我創建了一個viewmetamodel類,它包含我所有的類型作爲可爲空的屬性。我的動作方法接受這個viewmetamodel類型並驗證非空的屬性。

符合這一點,如果你的數據不是太大,那麼你可以加載所有的設置標籤,並使用Jquery應用該標籤點擊。

3) 您也可以爲每個選項卡創建@sections或使用EditorFor(c => c.settings)。這樣每個標籤都會加載一個類型安全的對象。你需要爲每個創建控制器。

我會說爲你選擇最簡單的方法。我希望這至少能給你一些想法。

相關問題