2011-09-22 66 views
0

我想知道是否有辦法在MVC 3中的選擇列表上維護您的選項列表。我對MVC很新,但在WebForms中,您可以在第一次加載的時候填充DropDownList頁面,然後ViewState將維護所有AutoPostBacks的列表。這很好,因爲DropDownLists經常通過對數據庫的查詢來填充。我知道ViewState在MVC中不存在,但有沒有更好的方式來重新填充SelectList,而不必在每個帖子的請求期間點擊數據庫?維護SelectList選項通過回發

回答

1

您在這裏有幾個選項。 您的選定值將被回傳。考慮到這一點,因爲你不再有ViewState的你最好要

  1. 讓你的倉庫(如果你沒有一個 - 創建一個你根本要求的數據存儲庫,它控制緩存或負載),其你需要在下拉菜單中查詢數據,緩存數據,然後再次請求它。重新綁定你的列表(使用DropDownFor)
  2. 使用MVCContrib的Html.Serialize來實質上ViewState它,但是緩存更清潔一些,並且不依賴於來回發送的數據。

另外請記住,在您發佈數據後,如果一切都很好,您想要REDIRECT回到「GET」操作來重新加載數據並顯示給客戶端。這是Web表單中的問題,有時用戶在回發後看到XYZ,但刷新後看到YXX。在MVC post-redirects中使用PRG模式 - 可以加載新的數據。

在發佈後,如果出現驗證錯誤,通常應該只重新顯示數據,否則重定向到get方法。

+0

我認爲那樣的事情就是答案。我想我只是被使用ViewState維護狀態的WebForms和控件所寵壞。感謝您的答覆。 – MeloYelo

0

您的控制器在回發中接收到該值。您必須將該值放回到模型中,以告訴視圖所選值是什麼。