我有一個MVC3 web應用程序,我需要實現數據庫搜索功能。我爲我的搜索表單創建ViewModel類,以便從View查看控制器的搜索參數。我能順利拿到我所有的搜索參數(包括搜索查詢和複選框,如果用戶想縮小搜索)在我的控制器類和使用存儲庫模式MVC3中ViewBag的替代方案
var searchResult = _repository.GetItems(searchParms, chkbox1, chkbox2, ..., chkbox10)
在此之後從數據庫中檢索數據,我通過我的信息搜索結果到分頁助手像
var paginatedSearchResult = new PaginatedList<Items>(searchResult, page ?? 0, pageSize);
我在我看來,頁面顯示檢索到的數據
return View(paginatedSearchResult)
的問題,我面對的是,BES從數據庫中獲取數據,我還需要在我的查看頁面中顯示搜索查詢字符串和主題(爲其使用了複選框),以便用戶可以查看他們搜索的內容。我沒有找到任何適當的解決方案,並不得不使用ViewBag。現在我的Controller頁面看起來很醜,有10多個ViewBag。我知道必須有一些很好的解決方案,但我無法找到它。任何建議將不勝感激。
感謝, ACS
Thanks @Adam。我試圖用3個屬性創建新的NewViewModel。第一個是'MyOriginalViewModel(我用來檢索搜索查詢)',第二個''PaginatedList(檢索分頁)',第三個'DBItems(包含所有記錄)'。所以,而不是做返回'查看(paginatedSearchResult)',我做返回'查看(NewViewModel)',以及我的查看頁面中的以下內容。 '@model IEnumerable'。但我得到編譯錯誤「傳入字典的模型項目類型爲'NewViewModel',但需要一個'Sys.Coll.Generic.IEnumerable'類型的模型項目」 。 –
ACS
2011-05-10 23:04:31
由於列表位於視圖模型中,因此您返回的不是列表中的單個對象。刪除ienumerable <>然後使用@model App.ViewModel.NewViewModel – 2011-05-11 04:14:04
好吧,如果我刪除了IEnumerable表單視圖頁面,我無法遍歷我的記錄集。當我這樣做時,我得到警告「foreach語句無法對'App.ViewModel.NewViewModel'類型的變量進行操作,因爲'App.ViewModel.NewViewModel'不包含'GetEnumerator'的公共定義。除了靜態用戶輸入外,我還有很多記錄要循環顯示在查看頁面中。謝謝! – ACS 2011-05-11 15:53:49