2012-06-19 31 views
2

問題ASP MVC的方式來重新填充下拉列表中沒有再次查詢數據庫

我視圖模型的列表。大多數視圖模型都有一個下拉式輸入。當ModelState有效時,一切正常,我能夠處理輸入數據,但是當表單驗證發生錯誤時,所有事情都會變得一團糟,因爲下拉菜單需要用數據重新填充。這是一個問題,因爲每個視圖模型都有不同的下拉列表。

嘗試性解決方案

我可以去想過每個視圖模型並獲得對應從數據庫中域模式,但似乎並不非常有效的(特別是因爲有可能是大約30場,每一個可能有一個不同的下拉列表!)。

如果表單驗證失敗,是否仍然有下拉列表存在?

+0

你有30下拉的視圖? ! – Shyju

+0

@Shyju這可能是可能的。現在它只有大約5-10。不是每個視圖模型都必須顯示下拉列表,但我只是試圖計劃最糟糕的。 –

回答

1

如果表單驗證失敗,是否仍然存在下拉列表?

沒有什麼內置的。一種可能性是這些數據庫調用的結果,以避免每次都擊中它。因此,您只需擁有從緩存中返回列表的方法,或者如果不存在,則查詢數據庫,將結果列表存儲到緩存並返回結果。然後,如果發生驗證錯誤,您將調用這些方法重新填充您的下拉列表。這是一種簡單而有效的方式,特別是對於價值不經常變化的dropdownlists。

+0

好吧唯一的問題是,現在我正在填充我的映射代碼中的下拉列表,當我去DomainModel ViewModel。從設計角度來看,在AutoMapping代碼中填充下拉列表是否應該是控制器的責任? –

+0

不,在映射代碼中填充下拉列表並不是一個壞主意。這是做到這一點的正確方法。只是當你從控制器調用你的映射方法時,你會傳遞控制器檢索到的域模型的緩存版本。 –

相關問題